如何将保存的数据重置为默认值?

时间:2008-12-20 14:32:49

标签: ios cocoa-touch nsuserdefaults

我正在使用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会完成这项工作,但事实并非如此。

4 个答案:

答案 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创建一个新的   共享用户默认对象   标准搜索列表。

有些积极的(如意?)认为这看起来就像你需要的那样。 =)