2013-02-24 4 views
0

Я столкнулся с каким-то странным поведением NSUserDefaults. Я сохраняю свои данные, затем синхронизирую, а затем выполняю NSlog NSUserDefaults, чтобы убедиться, что он сохранен. Данные отображаются как сохраненные должным образом из NSlog, но когда я полностью закрываю приложение (дважды нажмите кнопку «Дом» и убейте приложение), когда он перезапустит это значение, он не изменился. Что еще более странно, если я несколько раз повторяю код, сохраняя NSUserDefaults, убивая приложение, перезагружая NSUserDefaults, иногда он автоматически сохраняется, а в других случаях это не так.Странное поведение iPhone SDK NSUserDefaults

Я прочитал это сообщение Strange NSUserDefaults behavior, но я звоню в синхронизацию, поэтому я не думаю, что это моя проблема.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:@"MyString" forKey:@"testString"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]); 

Любая помощь очень ценится.

Что действительно меня смущает, если NSLog of standardUserDefaults показывает, что данные сохраняются, почему бы не после того, как приложение было убито ???

Благодаря


UPDATE


Похоже, проблема была с путаницей в изменяемых и неизменяемых массивах я была спасительной для NSUserDefaults. Я использовал mutablecopy, когда я извлекал данные и, казалось, решил проблему.

+0

Синхронизация возвращает bool. Почему бы вам не войти в систему, чтобы убедиться, что она счастлива. BOOL result = [prefs synchronize]; NSLog (@ "synchronize result =% d", result); – danh

ответ

0

Для получения значения вы можете использовать что-то вроде этого

NSUserDEfaults *ud = [NSUserDefault standarUserDefaults]; 
[ud [email protected]"YourKey"]; 

Если она возвращает ноль она не была сохранена.