NSUserDefaults не работает правильно - PullRequest
4 голосов
/ 13 января 2011

Возникли проблемы с NSUserDefaults здесь.

Вот как я это создаю:

NSString *theCity = @"Test City";
[[NSUserDefaults standardUserDefaults] setObject:theCity forKey:@"SavedCity"];

Вот как я пытаюсь получить его:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"])  
    {
         NSLog(@"Key exists! %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"]);
    }
    else {
         NSLog(@"No city saved!");
    }   

Проблема, с которой я столкнулся, заключается в том, что даже если есть ключ для «SavedCity» (я проверяю файл pref в каталоге Simulator), он всегда отображает «Город не сохранен». Я что-то не так делаю?

Спасибо!

Ответы [ 3 ]

10 голосов
/ 13 января 2011

Две вещи, которые вы можете попробовать.

1) Попробуйте синхронизировать пользовательские настройки по умолчанию после установки строки. [[NSUserDefaults standardUserDefaults] synchronize]

2) Попробуйте извлечь строку, используя -stringForKey:

8 голосов
/ 13 января 2011

Недавно я столкнулся с подобной проблемой. Вот что исправило это для меня.

Из Руководства по программированию приложений для iOS :

Рекомендуется регистрировать любые значения предпочтений по умолчанию программно во время запуска в дополнение к их включению в списки свойств комплекта настроек. Для вновь установленных приложений значения предпочтений по умолчанию из пакета настроек приложения не устанавливаются до тех пор, пока не запустится приложение «Настройки». Это означает, что если пользователь запускает ваше приложение до запуска настроек, значения по умолчанию, указанные в вашем комплекте настроек, будут недоступны. Установка таких значений программно во время запуска гарантирует, что ваше приложение всегда имеет соответствующие значения. Чтобы программно зарегистрировать значения по умолчанию, используйте метод registerDefaults: класса NSUserDefaults.

0 голосов
/ 13 января 2011

Что вы должны добавить это:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"] != nil)

Потому что вы хотите проверить, что вы сохранили что-то.

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