Почему 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 не удалось сохранить NSMutableDictionary в iPhone SDK?
- как сохранить и прочитать массив массива в NSUserdefaults в swift?
- Как я могу использовать UserDefaults в Swift?
- iOS: используйте логическое значение в NSUserDefaults
- Сохранение пользовательского classа Swift с помощью NSCoding для UserDefaults
- Каков оптимальный способ хранения NSDate в NSUserDefaults?
- Как сохранить пользовательские объекты в NSUserDefaults
- В чем заключается использование - ?
- Сохранение UIColor и загрузка из NSUserDefaults
- Ожидаемая декларация Ошибка при использовании Swift
- Хранить в NSUserDefaults
- Сохранить словарь в userdefaults в swift 3 с помощью xcode 8
- Сохраняются ли NSUserDefaults через обновление в приложении в App Store?
Если вы прекратите свое приложение, нажав кнопку «домой» (в симуляторе или на устройстве), ваши 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, он работал неправильно. Проблема была решена путем синхронизации как после сохранения, так и перед возвратом.