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 对的字典迭代到用户默认值中。
我正在我的应用程序中实现备份功能。因此,我正在备份 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 对的字典迭代到用户默认值中。