在我的项目中,我使用NSUseDefaults
来存储具有不同对象的商店数据。
NSUserDefaults *defaults1=[NSUserDefaults standardUserDefaults];
//---- I have set object for this
[defaults1 synchronize];
NSUserDefaults *defaults2=[NSUserDefaults standardUserDefaults];
//---- I have set object for this
[defaults2 synchronize];
现在我想清除defaults2
的所有密钥数据,而不是defaults1
。所以每当我申请下面的代码时:
NSDictionary *defaultsDictionary = [defaults2 persistentDomainForName: appDomain];
for (NSString *key in [defaultsDictionary allKeys]) {
NSLog(@"removing user pref for %@", key);
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
}
以上代码删除了defaults2
的值,但也删除了defaults1
的值。但我不想删除defaults1
的对象。所以请帮帮我。
答案 0 :(得分:1)
NSUserDefaults就像一个singelton类,所以它总是返回相同的共享系统对象。
您可以使用多个键存储多个对象,并可以根据这些键删除/删除对象。
答案 1 :(得分:1)
如果你NSUserDefaults standardUserDefaults
NSUserDefaults *defaults1=[NSUserDefaults standardUserDefaults];
//---- I have set object for this
[defaults1 synchronize];
[[defaults1 dictionaryRepresentation] allKeys]; // use this keys for deleting
,你应该知道standardUserDefaults 返回共享的默认对象。,实际上defaults1和defaults2相同。
您可以存储密钥,然后仅删除以下键:
a
b
c