Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在应用程序终止之间持久化NSUserDefaults信息_Ios_Nsuserdefaults - Fatal编程技术网

Ios 在应用程序终止之间持久化NSUserDefaults信息

Ios 在应用程序终止之间持久化NSUserDefaults信息,ios,nsuserdefaults,Ios,Nsuserdefaults,在iOS4中,当我保存NSUserDefaults时,信息被保存。但是,如果应用程序变为非活动状态,并且我关闭了应用程序(双击home按钮,然后终止应用程序),并再次启动应用程序,则不会读取NSUserDefaults 现在,这是否是NSUserDefaults的默认行为,即如果应用程序因任何问题而终止,下一次启动将不会存储信息 我用来保存信息的呼叫是:- [[NSUserDefaults standardUserDefaults] registerDefaults: [NSDicti

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

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

我用来保存信息的呼叫是:-

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

注册默认值后,添加此

[[NSUserDefaults standardUserDefaults] synchronize];
在同步之前,只要应用程序处于活动状态,standardUserDefaults就会给出当前/正确的值

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

例如:把它想象成你正在编辑的谷歌文档


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

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

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

[[NSUserDefaults standardUserDefaults] synchronize];

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

SO的可能副本充满了完全相同的n00b问题。我不相信你不能用谷歌搜索“NSUserDefaults不保存”。。。投票赞成结束。