Странное поведение iPhone SDK NSUserDefaults
У меня странное поведение NSUserDefaults. Я сохраняю свои данные, затем синхронизируюсь, затем делаю NSlog NSUserDefaults, чтобы убедиться, что они сохранены. Данные отображаются как сохраненные должным образом из журнала NSlog, но когда я полностью закрываю приложение (дважды щелкните кнопку "Домой" и завершаю работу приложения), при его перезапуске значение не изменяется. Что еще более странно, если я повторяю код несколько раз, сохраняя NSUserDefaults, убивая приложение, перезагружая NSUserDefaults, иногда оно сохраняется должным образом, а иногда нет.
Я прочитал этот пост Странное поведение NSUserDefaults, но я звоню синхронизировать, поэтому я не думаю, что это моя проблема.
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"MyString" forKey:@"testString"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Любая помощь с благодарностью.
Что меня действительно смущает, так это если NSLog standardUserDefaults показывает, что данные сохранены, почему бы не быть после того, как приложение было убито???
Спасибо
ОБНОВИТЬ
Похоже, проблема была в смешивании изменяемых и неизменяемых массивов, которые я сохранял в NSUserDefaults. Я использовал mutablecopy, когда извлекал данные и, похоже, решил проблему.
1 ответ
Для получения значения вы можете использовать что-то вроде этого
NSUserDEfaults *ud = [NSUserDefault standarUserDefaults];
[ud objectForKey=@"YourKey"];
Если он возвращает ноль, он не был сохранен.