Как восстановить сохраненные данные до значений по умолчанию? - PullRequest
6 голосов
/ 20 декабря 2008

Я реализую сохраненные данные в своем приложении, используя NSUserDefaults, например:

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:0],@"mySetting",nil]];
// check
int firstLaunch = [[NSUserDefaults standardUserDefaults] integerForKey:@"mySetting"];
// set
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"mySetting"];

Теперь для целей разработки я хотел бы иметь возможность удалить сохраненные данные и вернуться к настройкам по умолчанию, не удаляя приложение и переустанавливая его каждый раз. Есть ли быстрый способ сделать это? Я думал, что resetStandardUserDefaults сделает эту работу, но это не так.

Ответы [ 4 ]

13 голосов
/ 20 декабря 2008

Для ключа, который вы хотите вернуть к значению по умолчанию, -removeObjectForKey: удалит его определение из настроек приложения. При прочих равных условиях это означает, что последующие вызовы -<type>ForKey: вернут зарегистрированное значение по умолчанию.

10 голосов
/ 06 апреля 2011

Следующий фрагмент работал для меня.

NSDictionary *defaultsDict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
for (NSString *key in [defaultsDict allKeys])
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:key];

[[NSUserDefaults standardUserDefaults] synchronize];
2 голосов
/ 20 декабря 2008

Вы пытались перезагрузить настройки по умолчанию после вызова сброса? как говорит PEZ:

* 1003 например *

[NSUserDefaults resetStandardUserDefaults];
[NSUserDefaults standardUserDefaults];

Удаляет все значения по умолчанию и загружает стандартный набор.

Если вы хотите перенаправить только одно значение, как это видно из вашего фрагмента, то предложение Грэма о -removeObjectForKey проще.

РЕДАКТИРОВАТЬ: исправил мое неправильное использование методов класса.

0 голосов
/ 20 декабря 2008

В документации есть что сказать о resetStandardUserDefaults:

Последующий вызов standardUserDefaults создает новый общий пользователь по умолчанию объект с стандартный список поиска.

При некотором позитивном (желаемом?) Мышлении, похоже, это то, что вам нужно. =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...