[英]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.