2012-07-25 81 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]; 

默認值已被保存,他們會自動對任何後續應用程序啓動加載後。

相關問題