0

我遇到了一些奇怪的 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,似乎解决了这个问题。

4

1 回答 1

0

为了获得价值,你可以使用这样的东西

NSUserDEfaults *ud = [NSUserDefault standarUserDefaults];
[ud objectForKey=@"YourKey"];

如果它返回 nil,则它没有被保存。

于 2013-02-24T20:47:27.820 回答