iOS - UserDefaults 源文件替换

iOS - UserDefaults Source File Replacement

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

.../Library/Preferences/<Bundle Identifier>.plist

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

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

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

使用[NS]UserDefaults提供的API。

执行备份时,使用 dictionaryRepresentation 获取表示内容的字典。然后以您希望的任何方式保存此字典作为备份的一部分。

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