我遇到了一些奇怪的 NSUserDefaults 行为。我保存我的数据,然后同步,然后对 NSUserDefaults 进行 NSlog 以确保其已保存。数据显示为从 NSlog 正确保存,但是当我完全关闭应用程序(双击主页按钮并终止应用程序)重新启动时,值没有改变。更奇怪的是,如果我通过保存 NSUserDefaults、终止应用程序、重新加载 NSUserDefaults 来重复代码几次,有时它会正确保存,而有时却没有。
我读了这篇文章奇怪的 NSUserDefaults 行为,但我正在调用同步,所以我不认为那是我的问题。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"MyString" forKey:@"testString"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
任何帮助是极大的赞赏。
真正让我困惑的是,如果 standardUserDefaults 的 NSLog 显示数据已保存,为什么在应用程序被杀死后不保存???
谢谢
更新
看起来问题出在我保存到 NSUserDefaults 的可变和不可变数组中的混淆。我在检索数据时使用了 mutablecopy,似乎解决了这个问题。