iOS模拟器中NSUserDefaults未被保存?

6
我的[NSUserDefaults standardUserDefaults]没有被保存。每次我关闭应用程序并重新启动时,它都会恢复原样。我手头没有我的iOS设备,所以我不确定这是否会在设备上发生,但模拟器中没有其他应用程序会出现这种情况,这让我相信我的代码有问题。我不知道应该在这里包含哪部分代码,它只是简单地添加/修改NSUserDefaults中的键,正如我所说,在应用程序期间它运行良好,但在重新启动后却无法运行...

我知道我可以调用synchronize,但Apple建议不要这样做,只有在必要时才调用它...所以。

可能出了什么问题?


1
为什么不试着调用同步方法,看看它是否有效?你还可以检查它的返回值以查找错误... - sergio
嗨, 我刚刚在applicationwillterminate方法中尝试了一下,但是不起作用.. :( - user635064
尝试在applicationDidEnterBackground:中执行,正如我在下面的答案中建议的那样。有关更多详细信息,请参见此处:https://dev59.com/-XA75IYBdhLWcg3wubmn - sergio
3个回答

10

你的进程可能被不当地终止,以至于NSUserDefaults没有机会被存储。请参见此内容和主要是此内容

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

还要注意,在Xcode中停止应用程序通常不会保存用户默认设置。


Sergio是正确的。如果你希望在退出时将你的值保存在模拟器中,你必须调用synchronize - Shaolo

1

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


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

0

我无法理解你访问 NSUserDefault 的方式,你使用的静态函数 sharedDefaultsNSUserDefault 在苹果文档中不存在。

请按以下方式使用 NSUserDefault 进行访问:

[NSUserDefaults standardUserDefaults];

欲了解更多关于如何使用NSUserDefault的内容,请阅读博客文章。

iPhone编程教程 - 使用NSUserDefaults保存/检索数据


抱歉,那就是我的意思。我修正了我的问题。 - user635064
@user635064:请查看有关NSUserDefault的博客教程链接。 - Jhaliya - Praveen Sharma
我知道如何使用NSUserDefaults...那是我的错误,我没有复制粘贴我的代码,我以为它是sharedDefaults...感谢您的帮助。 - user635064

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接