NSUserDefaults 不保存数据。限制?

NSUserDefaults Not Saving Data. Limits?

我有这样一个问题:在userDefaults中保存数据的语法很清楚,并且每天都在应用程序中工作。今天我有这样一个问题,同步后什么都没有存储。 P.S我没有语法错误。

这里是保存和读取的例子:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Whosebug"];
[[NSUserDefaults standardUserDefaults] synchronize];

和阅读

BOOL Whosebug = [[NSUserDefaults standardUserDefaults] boolForKey:@"Whosebug"];

我知道有关 mutableCopy 的信息,但在这种简单的情况下不需要它。

那么 userDefaults 有什么限制吗?我正在真实设备和存储上进行测试,我有高达 50GB 的免费空间。我知道 userDefaults 存储在 plist 文件中,在紧急情况下可能是 1MB,但我什至不超过 1kb :( ...

using latest xcode and latest iOS version on 6S.

需要建议。感谢帮助。

我以前遇到过这个问题。在将其添加到新对象之前,我只是删除了密钥。 示例

 [NSUSER removeObjectForKey:@"savedData"];
    [NSUSER setBool:YES forKey:@"savedData"];
    [NSUSER  synchronize];

注意: 如果你用了那么多 no NSUSER 那么它就像嘲笑一样。这是我的小经验。

因此,在上午工作半小时后,我找到了解决方案,实际上是问题所在。像我这样的案例,90%都是开发者的错,原来如此。

我有超过 30 个用户默认值,例如其中 15 个有 initWithSuitName(标识符),使用标识符 id 保存的所有内容都运行良好但没有它保存值由于偏好冲突而损坏。

Solution: 我用标识符替换了未命名的 userDefaults,一切都已修复。

In Case of some problem with NSUserDefaults:

NSUserDefaults - 是线程安全的。

同步-立即保存数据

保存数据 - 如果应用程序将终止丢失数据的几率为 50%,在调试后点击停止按钮是相同的情况。 P.S如果没有保存在正确的位置,数据将丢失 50%。

调试 NSUserDefaults - 在调试器中你可以简单地输入 po [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]po [[NSUserDefaults standardUserDefaults] valueForKey:@"KeyForSavedData"]

共享容器示例 - 如果您想在应用程序和扩展之间共享 属性,您只需在 [=15= 中输入 appGroup 标识符]