iOS - UserDefaults源文件替换

时间:2017-10-04 14:39:13

标签: ios nsuserdefaults

我在我的应用中实现了备份功能。因此,我正在备份UserDefaults源文件,其中所有UserDefaults都保存在以下路径中:

 @Component(/*...*/)
 class Blabla {
   model = {
     px: 10
   }

   onSubmit(event: Event) {
     event.preventDefault()
     this.px = this.model.px
   }
 }

当用户恢复备份时,我将该文件替换为备份文件。

问题:该应用继续使用旧的UserDefaults。只有在我重新启动应用程序时才会应用更改。 如何告诉Xcode再次加载源文件?

1 个答案:

答案 0 :(得分:1)

您不应该备份plist文件,当然也不应该尝试替换plist文件。 [NS]UserDefaults碰巧在您应用的沙箱中使用特定的plist文件这一事实是您不应该依赖的实现细节。这可能会在任何未来的iOS更新中发生变化。

使用[NS]UserDefaults提供的API。

执行备份时,使用dictionaryRepresentation获取表示内容的字典。然后在备份过程中以任何方式保留此词典。

执行还原时,请加载持久字典。然后使用resetStandardUserDefaults重置用户默认值,然后使用每个键/值对的set(_:forKey:)方法将检索到的字典(每个键/值对)存储为用户默认值。