6

我正在使用 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

4 回答 4

13

对于您希望恢复为默认值的键,-removeObjectForKey:将从应用程序首选项中删除其定义。在所有条件相同的情况下,这意味着后续调用-<type>ForKey:将返回注册的默认值。

于 2008-12-20T15:44:01.850 回答
10

以下片段对我有用。

NSDictionary *defaultsDict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
for (NSString *key in [defaultsDict allKeys])
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:key];

[[NSUserDefaults standardUserDefaults] synchronize];
于 2011-04-06T00:39:09.970 回答
2

您是否尝试在调用重置后重新加载默认值?正如PEZ所说:

例如

[NSUserDefaults resetStandardUserDefaults];
[NSUserDefaults standardUserDefaults];

这将清除标准集中的所有默认值和负载。

如果您只想从您的代码片段中快速获取一个值,那么 Graham 的 -removeObjectForKey 建议更容易。

编辑:纠正了我对类方法的滥用。

于 2008-12-20T15:49:08.750 回答
0

文档对 resetStandardUserDefaults 有这样的说法:

随后调用standardUserDefaults 使用标准搜索列表创建一个新的共享用户默认对象。

有了一些积极的(一厢情愿?)的想法,这看起来就是你所需要的。=)

于 2008-12-20T14:55:49.560 回答