在应用加载时保存为用户默认值

Posted

技术标签:

【中文标题】在应用加载时保存为用户默认值【英文标题】:Saving to user defaults on app load 【发布时间】:2012-10-23 12:24:13 【问题描述】:

我最近实现了一个系统,可以将许多数组、布尔值和整数保存到用户默认值中。现在我目前在我的界面上使用三个按钮来测试功能并且它可以正常工作,但是我在尝试自动化保存系统时遇到了问题。

本质上,我希望应用程序在它终止或被推送到后台时保存数据。然后它只会在应用程序完全重新启动时加载数据。

我尝试使用以下 appdelegate 委托方法来运行我创建的用于保存和加载的方法:

didFinishLaunchingWithOptions: 
applicationWillTerminate:

但它们似乎不起作用,我知道当应用程序被推回时我需要输入前台方法来保存,但目前没有任何作用。应用似乎崩溃或无法保存和加载数据。

任何帮助将不胜感激。

【问题讨论】:

请记住,当您发布问题时,至少添加iphoneobjective cios之类的标签,以便所有人都能得到您的问题。 ..:) 【参考方案1】:

我认为您应该将defaults 保存在

- (void)applicationDidEnterBackground:(UIApplication *)application 方法。

并且,为了再次访问defaults,获取数据

- (void)applicationWillEnterForeground:(UIApplication *)application

或在

- (void)applicationDidBecomeActive:(UIApplication *)application 方法。

【讨论】:

我已经尝试过了,但得到了一些奇怪的结果。该应用程序似乎在其最小化时保存了数据,但如果手动退出应用程序(完全通过停止应用程序进程)并重新加载,则无法加载数据,其次,如上所述简单地退出应用程序无法保存数据。我会做一些适当的检查,所以我可以分解发生的事情并发布我的代码,但是有什么初步的想法吗? 当您按主页按钮退出时,Userdefaults 是否保存了数据?如果是,那么当您再次进入应用程序时,applicationDidBecomeActivedidFinishLaunchingWithOptions 将被调用。并且你可以从那里获取默认数据...退出时输入NSLog,这样您就可以知道它是否保存默认值... 谢谢,工作正常,我在编码时一定是半睡半醒,因为我在不正确的应用程序委托方法下调用了方法。

以上是关于在应用加载时保存为用户默认值的主要内容,如果未能解决你的问题,请参考以下文章

具有已发布枚举的用户默认值

保存/加载 UIColor 用户选择默认值

未选择任何内容时将默认值保存在组合框中c#

从用户默认值加载数据时,我得到一个空的 CLLocationCoordinates 数组

使用我的按钮的用户默认值保存不同的 setTitle 时遇到问题

在用户默认值中保存包含编码为数据的敏感数据的对象