繁体   English   中英

在应用程序终止之间保留NSUserDefaults信息

[英]Persisting NSUserDefaults information between application terminations

在iOS4中,当我保存NSUserDefaults时,信息将被保存。 但是,如果应用程序变为非活动状态,并且我终止应用程序(通过双击主页按钮然后终止应用程序),并再次启动应用程序,则不会读取NSUserDefaults。

现在,这是NSUserDefaults的默认行为,如果应用因任何问题而终止,下次启动将不会存储信息吗?

我用来保持信息的电话是: -

[[NSUserDefaults standardUserDefaults] registerDefaults:
     [NSDictionary dictionaryWithObjectsAndKeys:
      "Some date", @"Validity",
      nil]];

注册默认值后添加此项

[[NSUserDefaults standardUserDefaults] synchronize];

在您同步之前,只要应用程序处于活动状态,standardUserDefaults就会提供当前/正确的值。

一旦应用程序终止,由于您没有同步standardUserDefaults,应用程序将在下次启动时读取未同步的值。

示例:将其视为您正在编辑的Google文档。

google文档的AutoSave功能相当于nsuserdefaults synchornize。 如果您在对文档所做的更改已自动保存之前关闭浏览器,则下次加载时,您将看到旧内容。

您提到的用于保持用户默认值registerDefaults的调用实际上并不会将任何内容保留到磁盘上。 registerDefaults作用是初始化用于应用程序的默认值,如果它在磁盘上找不到的话。 您应该在每次应用程序启动时执行此操作,通常在app delegate的initialize方法中执行此操作。

应用程序运行后,通常会修改用户默认值。 每当您想要将这些修改过的默认值保存到磁盘时,您应该调用:

[[NSUserDefaults standardUserDefaults] synchronize];

保存默认值后,将在任何后续应用程序启动时自动加载它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM