每次重启应用时,NSUserDefaults中的数据都会消失

时间:2015-04-23 16:23:15

标签: ios xcode nsuserdefaults

我看到这种奇怪的行为,这似乎特定于我的具体设备或我的建筑环境(我的同事在构建相同的代码时没有这个问题)。每次我从NSUserDefaults中的Xcode数据启动应用程序都消失了。当我杀死应用程序并重新启动它时也会发生同样的情况。

我尝试重新启动Xcode,我的笔记本电脑,设备,清理项目和派生数据 - 没有任何帮助。更新数据后我会调用synchronize(),因此应该保留它。但事实并非如此。我在控制台中没有看到任何错误。

这个问题的原因是什么?我该怎么做才能解决它?这是由一些花哨的隐藏项目设置引起的吗?

我还想知道数据是在重启时重置还是在调用synchronize()时未保存。我可以检查保存NSUserDefaults的文件内容吗?

更新:一个有趣的细节。在模拟器中杀死应用程序后,我无法再次从Xcode启动它(获取“The operation couldn’t be completed. (LaunchServicesError error 0.)”)。我必须使用iOS Simulator -> Reset Content and Settings才能再次在模拟器中运行应用程序。

更新2 :我尝试按照建议here找到iPhone模拟器存储NSSharedPreferences的文件,但它不存在。

2 个答案:

答案 0 :(得分:2)

没有花哨的设置可以禁用持久存储到NSUserDefaults中,但是,您需要考虑的几个注意事项:

  1. 在从NSUserDefaults添加和检索对象之前,请确保归档和取消归档除简单值之外的对象
  2. 请确保您了解持久数据的范围(App,Device,...),查看NSUserDefault类中的相应方法。
  3. 确保您的第三方库不重置NSUserDefault,这是我的问题。在启动应用程序时进行调试,并尝试确定您是否在开始时以及“松开”时有值。这有助于我的情况。

答案 1 :(得分:0)

尝试创建一个新的“单一视图应用程序”,并添加您用于在NSUserDefaultdidFinishLaunchingWithOptions中保存数据的代码。看看问题是否仍然存在。