我使用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你到店里booleans,integers,objects等我有什么方法来执行删除所有键,以便成为NSUserDefaults的像拳头时我启动应用程序?
NSUserDefaults enable
booleans
integers
objects
我正在寻找类似的东西:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs deleteAllKeysAndObjectsInTheDictionary];
或者也许有一种获取所有键的方法,我必须遍历每个对象,但是我不知道如何删除它们。
编辑:
我努力了 :
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [NSUserDefaults resetStandardUserDefaults]; [prefs synchronize];
而且我仍然能够获得高分。
如果您查看NSUserDefaults文档,将会看到一个方法- (NSDictionary *) dictionaryRepresentation。在标准用户默认值上使用此方法,可以获取用户默认值中所有键的列表。然后,您可以使用它清除用户默认设置:
- (NSDictionary *) dictionaryRepresentation
- (void)resetDefaults { NSUserDefaults * defs = [NSUserDefaults standardUserDefaults]; NSDictionary * dict = [defs dictionaryRepresentation]; for (id key in dict) { [defs removeObjectForKey:key]; } [defs synchronize]; }