2012-07-25 75 views
0

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

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

我使用的持久化信息的调用是: -

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

可能重复的[为什么NSUserDefaults不保存我的值?](http://stackoverflow.com/questions/2622754/why-is-nsuserdefaults-not-saving-my-values) – 2012-07-25 21:09:43

+0

SO是完全确切的同样的n00b问题。我不相信你不能谷歌'NSUserDefaults不保存'...投票结束。 – 2012-07-25 21:10:41

回答

1

后您注册默认设置,直到您synchoronize添加此

[[NSUserDefaults standardUserDefaults] synchronize]; 

,该standardUserDefaults只要给电流/正确的价值观该应用程序还活着。

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

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

Google文档的AutoSave功能相当于nsuserdefaults synchornize。如果在对文档所做的更改进行自动保存之前关闭浏览器,则下次加载时会显示旧内容。

1

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

一旦您的应用程序正在运行,它通常会修改用户默认值。每当你想保存这些修改默认的磁盘,你应该叫:

[[NSUserDefaults standardUserDefaults] synchronize]; 

默认值已被保存,他们会自动对任何后续应用程序启动加载后。

相关问题