0

当 iOS 应用程序更新到新版本时,我需要清理一些存储在 NSUserDefaults 中的属性。

有没有办法在此类应用更新即将发生或已经发生时得到通知?

我的假设是否正确,即当应用程序更新时,NSUserDefaults 不会自动清理?

4

2 回答 2

4

UserDefaults 在应用更新时不会被修改。您本质上要问的是如何为您的数据实施版本控制。最基本的方法是在您的应用程序中使用版本值并将其添加到您的 UserDefaults。

应用启动示例流程:

  1. 您在代码中定义了“1.0”版本和“版本”键
  2. 在应用程序启动时,会访问 UserDefaults 并检查您的“版本”键以查看它是否存在值。
  3. 如果一个值存在并且它等于上面定义的版本,这意味着应用程序之前已经使用这个版本启动过,所以不需要做任何工作。
  4. 如果一个值存在但它与上面定义的版本不相等(这将在未来的版本中发生)或根本不存在任何值,您可以执行清理,因为这是您第一次启动此版本。
  5. 最后,将 UserDefaults 中的值更新为当前版本。
于 2017-07-05T20:49:50.743 回答
3

根据我的经验,除非用户从头开始重新安装应用程序,否则 NSUserDefaults 会保留在未来的版本中。

您可以通过跟踪版本号来实现您的目标,一旦应用程序打开,您可以在 App Delegate 上更新该版本号。

基于此,您可以检查并使用您的逻辑调用一个函数来重置您想要的属性。

于 2017-07-05T20:48:10.500 回答