Я сталкиваюсь с чем-то немного загадочным.У меня есть некоторые базовые строковые данные, которые я пытаюсь сохранить в NSUserDefaults, например:
NSString *state = @"finished";
[[NSUserDefaults standardUserDefaults] setObject:state forKey:@"downloadFinished"];
[[NSUserDefaults standardUserDefaults] synchronize];
Когда приложение запускается, один из способов, с помощью которого оно принимает решение о том, какое представление загрузить, - это проверитьзначение этого пользовательского параметра:
NSString *savedState = [[NSUserDefaults standardUserDefaults] stringForKey:@"downloadFinished"]
if(savedState && [savedState length]) {
// Show view
}
Время от времени я замечал, что это значение не загружается, хотя я точно знаю, что это значение было сохранено ранее (или, по крайней мере,приложение пыталось сохранить его ранее).Когда это происходит, я получаю нулевое значение обратно при поиске ключа «downloadFinished» по умолчанию.
Кто-нибудь сталкивался с этим раньше?Есть ли какие-либо знания о том, почему это может произойти?Какова вероятность того, что сохранение в пользовательский кэш по умолчанию и в базу данных по умолчанию не удастся, и есть ли способ предотвратить это?
Я собираюсь попробовать решение, упомянутое в Почему NSUserDefaultsне сохраняете мои значения? , что заставляет другую синхронизацию при входе приложения в фоновый режим, но мне интересно, есть ли у кого-то более глубокие знания по этому вопросу.