我正在使用NSUserDefaults在我的应用上实现保存的数据,如下所示:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:0],@"mySetting",nil]];
// check
int firstLaunch = [[NSUserDefaults standardUserDefaults] integerForKey:@"mySetting"];
// set
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"mySetting"];
现在出于开发目的,我希望能够删除已保存的数据并返回默认值,而无需每次都删除应用程序并重新安装。有快速的方法吗?我认为resetStandardUserDefaults会完成这项工作,但事实并非如此。
答案 0 :(得分:13)
对于您希望恢复为默认值的密钥,-removeObjectForKey:
将从应用偏好设置中删除其定义。在所有条件相同的情况下,这意味着-<type>ForKey:
的后续调用将返回已注册的默认值。
答案 1 :(得分:10)
以下代码段对我有用。
NSDictionary *defaultsDict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
for (NSString *key in [defaultsDict allKeys])
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
答案 2 :(得分:2)
您是否尝试在重置后重新加载默认值?正如PEZ所说:
e.g
[NSUserDefaults resetStandardUserDefaults];
[NSUserDefaults standardUserDefaults];
清除标准集中的所有默认值和负载。
如果你只想从你的片段中看到一个值,那么格雷厄姆对-removeObjectForKey的建议就更容易了。
编辑:纠正了我对课程方法的误用。
答案 3 :(得分:0)
有关resetStandardUserDefaults的文档:
随后的调用 standardUserDefaults创建一个新的 共享用户默认对象 标准搜索列表。
有些积极的(如意?)认为这看起来就像你需要的那样。 =)