NSUserDefaults不保存数据。限制?

时间:2015-12-21 17:20:29

标签: ios objective-c nsuserdefaults

我遇到了这样的问题:在userDefaults中保存数据的语法很明确,并且每天都在app中工作。今天我遇到了一个问题,即同步后没有任何内容存储。 P.S我没有语法错误。

这是一个保存和阅读的例子:

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

阅读

BOOL stackOverflow = [[NSUserDefaults standardUserDefaults] boolForKey:@"StackOverflow"];

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

对于userDefaults有任何限制吗?我正在测试真实设备和存储,我有免费的50GB。我知道userDefaults存储在plist文件中,在危急情况下可能是1MB但我甚至不超过1kb :( ...

using latest xcode and latest iOS version on 6S.

需要建议。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

所以经过半小时的早上工作后,我找到了解决方案,实际上是问题所在。像我这样的案例,90%是开发人员的错,所以就是这样。

我有超过30个用户默认值,其中例如其中15个有initWithSuitName(标识符),使用标识符ID保存的所有内容都运行良好但没有保存值由于优先权冲突而破裂。

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

  

如果出现NSUserDefaults的某些问题:

NSUserDefaults - 是线程安全的。

同步 - 立即保存数据

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

分发NSUserDefaults - 在调试器中,您只需选中po [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]po [[NSUserDefaults standardUserDefaults] valueForKey:@"KeyForSavedData"]

共享容器示例 - 如果您想在应用和扩展程序之间共享媒体资源,只需在appGroup

中输入initWithSuitName:@"com.Example.ExampleAPP"标识符即可

答案 1 :(得分:0)

我之前遇到过这个问题。我只是删除密钥后再将其添加到新对象。 实施例

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

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