iOS:无需重新安装即可重置 iOS 应用程序数据的可能选项有哪些?

标签 ios core-data plist nsuserdefaults reset

这是一个 iOS 101 问题,我因为不知道答案而感觉自己像个 SCSS :-) 问题是 - 如何将 iOS 应用程序重置为首次安装时的状态? 该应用程序将内容存储在 NSUserDefaults 和 plist 中。要求用户删除并重新安装应用程序似乎过分了。

除了要求我的用户简单地重新安装应用程序之外,还有哪些可能的选项可用(这会让我看起来有点缺乏创新:-))

这个特定的应用程序使用 NSUserDefaults 和 plists 来存储数据。但是当你想出你的创造性解决方案时,我也很感激其他情况的任何线索(即数据在核心数据和.plists中的位置)

此外,如果这是一个需要在应用代码中实现的功能,请感谢有关优雅解决方案的建议。

谢谢!

最佳答案

从沙盒中删除所有文件:

NSString *p = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
for (NSString *fname in @[ @"tmp", @"Library", @"Documents", @"Caches", @"Preferences" ]) {
    NSString *path = [p stringByAppendingPathComponent:fname];
    [[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
}

仅重置用户默认值的替代方法:

NSDictionary *dRepr = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
for (NSString *key in dRepr) {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
}

[[NSUserDefaults standardUserDefaults] synchronize];
[NSUserDefaults resetStandardUserDefaults];

关于iOS:无需重新安装即可重置 iOS 应用程序数据的可能选项有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675418/

相关文章:

python 模块来解码 OSX plist 整数日期?

ios - 更新模型层时 CABasicAnimation 无法正确设置动画

objective-c - 核心数据关系 : popup button can select a relationship but the name is not displayed

ios - 核心数据 - 对象在一对多关系中的顺序

ios - MR_saveToPersistentStoreAndWait 不保存数组中的数据

iphone - 如何将本地保存的xml文件保存到.plist文件中

ios - 为什么我不能从 plist 读取数据?

ios - 向所有 View 可见的 iOS 应用程序添加顶部栏

ios - UIVibrancyEffect 在设备上变暗,在模拟器中充满活力

objective-c - 在 UITableView 问题的顶部添加额外的单元格