2015-09-17 2 views
0

В моем проекте я использую NSUseDefaults для хранения данных с различными объектами.Очистить данные конкретного объекта NSUserDefaults Данные

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. Поэтому, пожалуйста, помогите мне.

ответ

1

NSUserDefaults подобен классу singelton, поэтому он всегда будет возвращать один и тот же общий системный объект.

Вы можете хранить несколько объектов, используя несколько ключей, и можете удалять/удалять объекты по этим клавишам.

1

Если у вас есть read a doc около NSUserDefaults standardUserDefaults, вы должны знать, что standardUserDefaults Возвращает общий объект по умолчанию. и фактически defaults1 и defaults2 то же самое.

Вы можете хранить ключи, а затем удалить только те ключи, как:

NSUserDefaults *defaults1=[NSUserDefaults standardUserDefaults]; 

//---- I have set object for this 

[defaults1 synchronize]; 

[[defaults1 dictionaryRepresentation] allKeys]; // use this keys for deleting 
Смежные вопросы