【发布时间】:2013-02-09 23:12:08
【问题描述】:
我遇到了一些奇怪的 NSUserDefaults 行为。我保存我的数据,然后同步,然后对 NSUserDefaults 进行 NSlog 以确保其已保存。数据显示为从 NSlog 正确保存,但是当我完全关闭应用程序(双击主页按钮并终止应用程序)重新启动时,值没有改变。更奇怪的是,如果我通过保存 NSUserDefaults、终止应用程序、重新加载 NSUserDefaults 来重复代码几次,有时它会正确保存,有时却没有。
我阅读了这篇文章 Strange NSUserDefaults behavior,但我正在调用同步,所以我认为这不是我的问题。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"MyString" forKey:@"testString"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
非常感谢任何帮助。
真正让我困惑的是,如果 standardUserDefaults 的 NSLog 显示数据已保存,为什么在应用程序被杀死后不保存???
谢谢
更新
看起来问题出在我保存到 NSUserDefaults 的可变和不可变数组中的混淆。我在检索数据时使用了 mutablecopy,似乎解决了这个问题。
【问题讨论】:
-
同步返回一个布尔值。你为什么不记录一下,看看它是否快乐。 BOOL 结果 = [首选项同步]; NSLog(@"同步结果 = %d", 结果);
标签: iphone nsuserdefaults save synchronizing