NSUserDefaults не всегда сохраняет мои данные NSString - PullRequest
0 голосов
/ 27 января 2012

Я сталкиваюсь с чем-то немного загадочным.У меня есть некоторые базовые строковые данные, которые я пытаюсь сохранить в 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не сохраняете мои значения? , что заставляет другую синхронизацию при входе приложения в фоновый режим, но мне интересно, есть ли у кого-то более глубокие знания по этому вопросу.

1 Ответ

0 голосов
/ 27 января 2012

Я предполагаю, что некоторые проблемы с типом данных здесь. Можете ли вы попробовать это вместо этого и посмотреть, получите ли вы что-нибудь?

NSString *savedState = [[NSUserDefaults standardUserDefaults] objectForKey:@"downloadFinished"]

Уведомление objectForKey использование

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