【发布时间】:2014-07-01 20:29:07
【问题描述】:
我正面临 NSUserDefaults 的一个非常奇怪的行为,问题是 [NSUserDefaults standardUserDefaults] 对象正在被随机删除!
我的 [NSUserDefaults standardUserDefaults] 包含大约 65 个对象(60 个小 NSStrings 和 3 个数组,最大计数可能是 4 和 2 个其他数组,最大计数为 30 ..注意,面对这个问题时,它从来都不是最大的情况) ,其中一个对象是检查用户是否已经完成注册阶段的值。 启动应用程序时,有时这个 NSUserDefaults 将仅包含这 65 个对象中的 5 个对象,而其他对象则从 plist 中删除而不会再次出现,即使我重新启动应用程序也是如此。这会导致用户再次进入注册阶段!!
我很确定我正确使用了保存功能
[[NSUserDefaults standardUserDefaults] setObject:@"Value" forKey:@"Key"];
[[NSUserDefaults standardUserDefaults] synchronize];
我已经在谷歌上搜索过类似的行为,但没有找到任何可以提供帮助的东西! 有没有人遇到过这样的行为,有什么解决办法?
感谢您的帮助
【问题讨论】:
-
你试过 setObject 而不是 setValue 吗?你有重复的钥匙吗?价值观?
-
对不起,我更新了我的帖子..我在我的所有项目中都使用 setObject 而不是 setValue..我尝试了一些 setValue 但仍然没有成功。重复键是什么意思?每当我的值被更新时,我都会以相同的键名再次保存它!
-
在正常情况下检查plist时,所有字段都保存成功,没有任何重复
-
每次key保存后能打印出nsuserdefaults的内容吗?
-
它们都已成功保存,因为这些值通过从 NSUserDefault 读取并正常显示在应用程序内部使用。但是当我退出应用程序并在一段时间后重新打开它时,所有这些值都在删除(随机而不是总是)..另外,奇怪的是,当用户打开应用程序并且之前已经进行过注册时,与注册阶段相关的对象没有被更改,那么为什么要删除这些值呢?我检查了只要用户有空间就没有限制保存 NSUserDefault ..所以这个错误让我发疯:S
标签: ios objective-c ios7 nsuserdefaults