Почему NSUserDefaults не сохраняет мои значения?

Привет, Я пытаюсь использовать NSUserDefaults для сохранения некоторых значений по умолчанию в базе данных. Я могу сохранить значения в NSUserDefaults (даже проверил его в NSLog ). Теперь, когда приложение перезагружается, мне нужны значения в делегате приложения. Но я ничего не получаю в NSUserDefaults . Ниже приведен мой код из моего classа, где я сохраняю значения в NSUserDefaults :

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs setObject:appDel.dictProfile forKey:@"dict"]; NSLog(@"%@",[prefs valueForKey:@"dict"]); 

Ниже приведен мой код от App Delegagte:

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSLog(@"%@",[prefs valueForKey:@"dict"]); 

вышеуказанный код всегда возвращает мне null. Может кто-нибудь, пожалуйста, помогите мне?

Если вы прекратите свое приложение, нажав кнопку «домой» (в симуляторе или на устройстве), ваши NSUserDefaults будут сохранены.

Если вы прекратите свое приложение, нажав «Стоп» в Xcode (в симуляторе или на устройстве), ваши NSUserDefaults могут быть сохранены, но есть хорошие шансы, что они не будут. NSUserDefaults периодически сохраняет любые изменения, и если вы прекратите процесс до того, как они будут сохранены, они исчезнут. Вы можете принудительно сохранить, вызвав:

 [[NSUserDefaults standardUserDefaults] synchronize]; 

Приложение:

В iOS4 (этот ответ был первоначально написан, когда iOS3 был общедоступным), ваши NSUserDefaults могут не сохраняться при нажатии кнопки «домой». Вручную [[NSUserDefaults standardUserDefaults] synchronize] в applicationDidEnterBackground: необходимо убедиться, что ваши NSUserDefaults сохранены правильно (это действительно должно быть встроенное поведение IMO).

Этот код отлично подходит для меня.

 NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; if (standardUserDefaults) { [standardUserDefaults setObject:myString forKey:@"Prefs"]; [standardUserDefaults synchronize]; } 

Вы не сказали, работаете ли вы на устройстве или в симуляторе, но если вы перезапустите приложение в симуляторе, все настройки будут сброшены между запусками, если вы запустите Xcode. Настройки будут сохранены только в том случае, если вы перейдете с самого симулятора.

В моем случае я сохранял и извлекал строку. Когда я синхронизировался после сохранения, а затем возвращался в другой stream, он работал неправильно. Проблема была решена путем синхронизации как после сохранения, так и перед возвратом.

Давайте будем гением компьютера.