проблема с загрузкой из NSUserDefaults, obj-c - PullRequest
0 голосов
/ 06 сентября 2011

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

-(void) saveName {

    NSString *name = nameField.text;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:name forKey:@"playersName"];
    [defaults synchronize];
 }


-(void) viewDidLoad  // method called later on in code from different viewcontroller
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *name = [defaults objectForKey:@"playersName"];
    playerName.text = name; // player name == myLabel

    if ([[NSUsersDefaults standardUserDefaults] objectForKey:@"playersName"] == nil)  {
        playerName.text =@" blank";
    }    
}

Моя строка, похоже, не сохраняется в userdefaults, поскольку @ "пустая" строка продолжает появляться с моим ярлыком. Я не слишком знаком с NSUserDefaults, поэтому любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

Я бы посоветовал вам проверить, вызывается ли ваш метод '(void) saveName' или нет ... Поставьте точку останова и посмотрите результат

0 голосов
/ 06 сентября 2011

Несколько вещей, на которые следует обратить внимание при использовании NSUserDefaults:

  1. вызовы метода syncrhonize не являются необходимыми и замедляют работу только в том случае, если ваша программа многопоточная.если используемый вами ключ используется другими библиотеками в вашем проекте
  2. Проверьте, не является ли значение, заданное вами для ключа, не nil
  3. Попробуйте использовать stringForKey: или boolForKey:вместо objectForKey:

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

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