一尘不染

从NSUserDefaults字典iOS中删除所有密钥

swift

我使用NSUserDefaults词典来存储诸如高分等基本信息,以便在用户关闭应用程序时不会丢失数据。无论如何,我使用:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

存储数据。例如,如果我想存储新的高分,那么我会这样做:

[prefs setInteger:1023 forKey:@"highScore"];
[prefs synchronize];  //this is needed in case the app is closed.

然后,如果我想检索高分,我会做:

[prefs integerForKey:@"highScore"];

反正问题是,我储存很多其他的事情,因为NSUserDefaults enable你到店里booleansintegersobjects等我有什么方法来执行删除所有键,以便成为NSUserDefaults的像拳头时我启动应用程序?

我正在寻找类似的东西:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs deleteAllKeysAndObjectsInTheDictionary];

或者也许有一种获取所有键的方法,我必须遍历每个对象,但是我不知道如何删除它们。

编辑:

我努力了 :

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[NSUserDefaults resetStandardUserDefaults];
[prefs synchronize];

而且我仍然能够获得高分。


阅读 223

收藏
2020-07-07

共1个答案

一尘不染

如果您查看NSUserDefaults文档,将会看到一个方法- (NSDictionary *) dictionaryRepresentation。在标准用户默认值上使用此方法,可以获取用户默认值中所有键的列表。然后,您可以使用它清除用户默认设置:

- (void)resetDefaults {
    NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
    NSDictionary * dict = [defs dictionaryRepresentation];
    for (id key in dict) {
        [defs removeObjectForKey:key];
    }
    [defs synchronize];
}
2020-07-07