在iOS4中,当我保存NSUserDefaults时,信息会被保存。但是,如果应用程序变为非活动状态,并且我终止应用程序(通过双击主页按钮然后终止应用程序),并再次启动应用程序,则不会读取NSUserDefaults。
现在,这是NSUserDefaults的默认行为,如果应用因任何问题而终止,下次发布将不会存储信息吗?
我用来保留信息的电话是: -
[[NSUserDefaults standardUserDefaults] registerDefaults:
[NSDictionary dictionaryWithObjectsAndKeys:
"Some date", @"Validity",
nil]];
答案 0 :(得分:1)
注册默认值后添加此
[[NSUserDefaults standardUserDefaults] synchronize];
直到您同步,只要应用程序处于活动状态,standardUserDefaults就会提供当前/正确的值。
一旦应用程序终止,由于您未同步standardUserDefaults,该应用程序将在下次启动时读取未同步的值。
示例:将其视为您正在编辑的Google文档。
google文档的AutoSave功能相当于nsuserdefaults synchornize。如果您在对文档所做的更改已自动保存之前关闭浏览器,则下次加载时,您将看到旧内容。
答案 1 :(得分:1)
您提到的用于保留用户默认值registerDefaults
的调用实际上并不会将任何内容保留到磁盘上。 registerDefaults
的作用是初始化应用程序使用的默认值,如果它在磁盘上找不到任何内容。您应该在每次应用程序启动时执行此操作,通常在应用程序委托的initialize
方法中执行此操作。
应用程序运行后,通常会修改用户默认值。每当您想将这些修改后的默认值保存到磁盘时,您应该调用:
[[NSUserDefaults standardUserDefaults] synchronize];
保存默认值后,它们将在任何后续应用程序启动时自动加载。