清除特定NSUserDefaults对象数据的数据

时间:2015-09-17 07:39:58

标签: ios objective-c iphone nsuserdefaults

在我的项目中,我使用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的对象。所以请帮帮我。

2 个答案:

答案 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