Получение данных из NSUserDefaults - работает в одном представлении, но не в другом - PullRequest
1 голос
/ 30 марта 2012

Я сохраняю зарегистрированное имя пользователя Facebook в настройках NSUserDefaults, используя приведенный ниже код (из файла AppDelegate). Код извлекает имя пользователя и выводит его на консоль просто отлично. Когда я пытаюсь сделать то же самое в другом контроллере представления, вывод NSLog возвращает (ноль).

Чего мне не хватает? Спасибо за любую помощь.

- (void)request:(FBRequest *)request didLoad:(id)result {
    if ([result isKindOfClass:[NSDictionary class]]) {
        NSDictionary* hash = result;
        NSString *username = (NSString*)[hash valueForKey:@"name"];
        [[NSUserDefaults standardUserDefaults] setObject:username forKey:@"Username"];
        NSLog(@"%@", username);
        NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];
        NSString *user = [standardUserDefaults stringForKey:@"Username"];
        NSLog(@"username from user defs %@",user);
    }
};

Вот код из другого контроллера представления, который не работает:

NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *user = [standardUserDefaults stringForKey:@"Username"];
NSLog(@"username from user defs %@",user);
userNameLbl.text = user;

Вот вывод журнала:

username from user defs app delegate my Facebook name
2012-03-30 13:29:20.564 project V2[63339:15803] (null)
2012-03-30 13:29:20.565 project V2[63339:15803] username from user defs app delegate (null)
2012-03-30 13:29:28.620 project V2[63339:15803] username from user defs (null)

Ответы [ 3 ]

2 голосов
/ 30 марта 2012
NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *user = [[NSUserDefaults standardUserDefaults] stringForKey:@"Username"];
NSLog(@"username from user defs %@",user);
userNameLbl.text = user;

Попробуйте это (я изменил только одну строку)

NSString *user = [[NSUserDefaults standardUserDefaults] stringForKey:@"Username"];

РЕДАКТИРОВАТЬ Так я сохраняю вещи в NSUserDefaults;

NSString *theKeyIWantToSave;
NSUSerDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:theKeyIWantToSave forKey:@"SomeKey"];

Ивсякий раз, когда / где я хочу получить его

NSString *key=[[NSUserDefaults standardUserDefaults] objectForKey:@"SomeKey"];
1 голос
/ 30 марта 2012

Попробуйте:

[[NSUserDefaults standardUserDefaults] setValue:newStr forKey:@"Username"];

для настройки и:

[[NSUserDefaults standardUserDefaults] valueForKey:@"Username"];

для получения.Нет импорта, ничего!

0 голосов
/ 23 сентября 2014

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

[[NSUserDefaults standardUserDefaults] synchronize];

Это запишет ваши значения по умолчанию в файл, что позволит вам получить их в следующий раз.

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