Правильный способ использовать NSUserDefaults? - PullRequest
3 голосов
/ 11 марта 2011

У меня проблема в том, что я не могу разобраться, и я надеюсь, что кто-то может дать мне подсказку или помочь.

У меня есть таблица, которая содержит 7 объектов. При нажатии на один из объектов пользователю предоставляется новая таблица, соответствующая нажатым объектам. Внутри этой таблицы пользователь может нажать кнопку «Добавить» и перенести их в новую таблицу, где они могут выбрать объекты для таблицы 2.

Таблица 1 и таблица 3 (первая и последняя) не нуждаются в редактировании, однако таблица 2 нуждается в этом. Мне нужно добавить данные, которые пользователь выбирает из таблицы 3, и сохранить их при повторном входе в приложение после его закрытия.

В таблице 1 всегда есть 7 объектов. И должен иметь возможность иметь другую таблицу 2. Поэтому я не уверен, что лучше всего создать 7 разных массивов.

Я смотрел и использовал NSUserDefaults раньше, однако я не уверен, что хороший способ приблизиться к этому при использовании NSUserDefaults.

1 Ответ

6 голосов
/ 11 марта 2011

вам нужно вывести ваш массив из пользовательских ошибок, изменить его, а затем переписать обратно в пользовательские ошибки. Получение массива:

NSMutableArray *yourArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"]mutableCopy];

Массив настроек:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:yourArray forKey:@"yourKey"];
[userDefaults synchronize];

Или используйте словари и вкладывайте их

NSMutableDictionary *yourDict1 = [[NSUserDefaults standardUserDefaults]objectForKey:@"yourKey1"]mutableCopy];
NSMutableDictionary *yourDict2 = [[yourDict1 valueForKey:@"yourKey2"]mutableCopy];

    // THIS WILL ADD DATA TO YOUR DICTIONARY
[yourDict2 setValue:@"value" forKey:@"key"];

    // THIS WILL GET DATA FROM YOUR DICTIONARY
NSString *tempStr = [yourDict2 valueForKey:@"keyToGet"];

    // This will write your sub dictionary to your main dictionary
[yourDict1 setObject: yourDict2 forKey:@"yourKey2"];

    // This will write your main dictionary back out to user defaults
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject: yourDict1 forKey:@"yourKey1"];
[userDefaults synchronize];
[yourDict1 release];
[yourDict2 release];
...