【问题标题】:NSUserDefaults not being saved in simulator?NSUserDefaults 没有保存在模拟器中?
【发布时间】:2011-08-27 08:44:31
【问题描述】:

我的[NSUserDefaults standardUserDefaults] 没有被保存。我关闭应用程序并重新启动它的所有内容,它都会恢复。我没有方便的 iOS 设备,所以我不确定这是否会在设备上发生,但其他应用程序都没有在模拟器中执行此操作,这让我相信我的代码有问题。我不知道我应该在此处包含哪一部分代码,这只是 nsuserdefaults 中的简单添加/修改键,正如我所说,它在应用程序期间运行良好,但在我重新启动后就不行了...

我知道我可以打电话给synchronize,但 Apple 建议不要这样做,并说我应该只在必须时才打电话......所以。

可能出了什么问题? 谢谢。

【问题讨论】:

  • 你为什么不尝试调用同步来看看它是否有效?您还可以检查其返回值是否有错误...
  • 嗨,我只是在 applicationwillterminate 方法中这样做了,但是没有用.. :(
  • 尝试在applicationDidEnterBackground: 中执行此操作,正如我在下面的回答中所建议的那样。有关详细信息,请参阅此:stackoverflow.com/questions/3139588/…

标签: iphone objective-c cocoa-touch ios-simulator nsuserdefaults


【解决方案1】:

您的进程可能被不正确地终止,因此 NSUserDefaults 没有机会被存储。另请参阅this,主要是this

我链接到的第二个帖子中的建议是在applicationDidEnterBackground: 中调用synchronize

请记住,通过在 Xcode 中停止应用来终止应用通常不会保存用户默认设置。

【讨论】:

  • 塞尔吉奥是对的。如果您希望在退出时将您的值保存在模拟器中,您必须致电synchronize
【解决方案2】:

您是从 Xcode/调试器重新启动吗?尝试先使用 Home 按钮将应用程序发送到后台。我认为框架会自动同步。

【讨论】:

  • 您好,感谢您的回复,我将其发送到后台,然后双击主页按钮并关闭应用程序。然后,当我再次从模拟器启动它时,它崩溃了。但是在 XCode 中,如果我构建 -> 运行,它不会崩溃,但我的 nsuserdefaults 没有保存......嗯
【解决方案3】:

我无法理解这种方式,您正在访问NSUserDefault,您使用sharedDefaultsNSUserDefault 的静态函数在Apple 文档中不存在

使用如下访问NSUserDefault

[NSUserDefaults standardUserDefaults];

更多信息请阅读NSUserDefault的使用博客文章。

iPhone Programming Tutorial – Saving/Retrieving Data Using NSUserDefaults

【讨论】:

  • 对不起,我就是这个意思。解决了我的问题。
  • @user635064 :查看 NSUserDefault 的博客教程链接。
  • 我知道如何使用 NSUserDefaults.. 这是一个错误,我没有复制粘贴我的代码我认为它是 sharedDefaults...感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多