簡體   English   中英

在應用程序終止之間保留NSUserDefaults信息

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM