从 AppStore 升级应用程序时有没有办法删除所有数据/缓存

Posted

技术标签:

【中文标题】从 AppStore 升级应用程序时有没有办法删除所有数据/缓存【英文标题】:Is there a way to remove all the data/caches when upgrading app from AppStore 【发布时间】:2015-12-08 14:22:53 【问题描述】:

当从 AppStore 更新到我的应用程序的最新版本时,我的一小部分用户会遇到与 WKWebView 相关的丑陋错误。 当应用程序被删除并重新安装时,该错误就会消失。 有没有办法在升级过程中删除旧数据/缓存?

【问题讨论】:

“旧代码”?你的意思是“旧数据”,对吧? 你的意思是用户保存的数据? 我不知道这个旧东西是什么。我没有编写旧代码,也没有它。也许有一些缓存什么的...... 你不知道你说的是数据还是代码? @Luda 你可以参考这个链接。只需将沙箱清除为应用程序的默认状态即可。 ***.com/questions/4793278/… 【参考方案1】:

当您更新应用程序时,所有代码都会被删除。如果您的应用更改了使用方式,例如未删除的数据,例如 NSUserDefaults,您必须在代码中添加逻辑来处理存在的“旧”数据。

【讨论】:

我要删除所有内容!所有的缓存,所有的一切。升级时,我希望从头开始安装应用程序。我该怎么做? @LinusG。是的,我知道。这正是我的意思。代码被删除。数据不是。 哦,好吧,我认为她很困惑,但意味着数据。 @Luda 您必须找出导致错误的数据并编写代码来解决与您的新版本不兼容的数据的可能性。 我会小心你对“是”这个词的强调......为你改变了它;)【参考方案2】:

不确定这是否可行,但这里有两种可能的方法:

1.

当您的应用加载时,在 AppDelegate 中检查 didLaunchWithOptions() 中保存的数据:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    if let data = userDefaults.valueForKey("<yourKey>") 
        userDefaults.removeObjectForKey("<yourKey>")
    
    
    return true

当然,您必须插入应用程序中用于保存内容的密钥,而不是 &lt;yourKey&gt;

2.

你也可以试试下面的代码,它会清除 NSUserDefaults 的所有内容,这样就不需要密钥了:

NSUserDefaults.standardUserDefaults().removePersistentDomainForName(NSBundle.ma‌​inBundle().bundleIdentifier!)

希望有帮助:)

【讨论】:

但它是否也会清除缓存? 你有钥匙吗?然后它会的。 @Luda 取决于“缓存”的含义。我们在这里谈论的是 NSUserDefault 还是应用程序中的其他数据可能导致错误? 我认为第二点足以从 NSUserDefaults 中删除所有内容。但那又如何呢?也应该这样做吗? ***.com/questions/4793278/… 看起来也是一个不错的方法。你应该试试看。顺便说一句,你能重现这个错误吗?

以上是关于从 AppStore 升级应用程序时有没有办法删除所有数据/缓存的主要内容,如果未能解决你的问题,请参考以下文章

从输入流Java读取时有没有办法超时? [复制]

运行 Xamarin.UITests 时有没有办法让应用程序选择语言或文化

有没有办法打开应用商店更新选项卡?

没有流量时有没有办法让应用引擎关闭

从 App Store 中删除应用程序

使用 AngularJS 路由时有没有办法预加载模板?