2012-02-18 81 views
3

我想實現(在存儲NSUserDefaults的)我的應用程序的數據和用戶偏好的備份作爲電子郵件附件選擇在稍後的日期,以恢復它們的用戶的喜好。如何備份/恢復我的應用程序

我已經得到了處理工作正常,我的應用程序的數據文件簡單地通過附加文件的電子郵件的內容,但不能工作了怎麼辦用戶偏好的等價物。設置包中的Root.plist僅包含設置界面的模板,不包含當前的設置。

閱讀設置成我自己的plist並保存該文檔目錄是一個選項,但似乎不雅,過於複雜。有沒有更好的辦法?

回答

1

我不會去尋找存儲NSUserDefaults plist中,因爲它不直接暴露通過API,因此是一個可以隨時更改的實現細節。

相反,

[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] 

會給你一個NSDictionary包含所有鍵值你的應用程序已經存儲了對。

+0

謝謝!這正是我要找的東西。它看起來像很多值不是特定於應用程序的,所以當我從備份還原數據時,我不能只更新NSUserDefaults中的所有值。 – 2012-02-18 16:24:10

1

參見本教程中,

http://iphonebyradix.blogspot.in/2011/03/read-and-write-data-from-plist-file.html

讀取用戶的默認值,使用這種方法

-(id)getFromNSUserDefaults:(NSString*)pForKey 
{ 
    id pReturnObject; 
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; 
    pReturnObject = [defaults valueForKey:pForKey]; 
    return pReturnObject; 
} 
+0

謝謝哈德利,但問題是我找不到包含NSUserDefaults設置的plist – 2012-02-18 12:59:42

+0

對於用戶默認設置,您不需要訪問.plist文件,您可以直接訪問它們 – HarshIT 2012-02-18 13:00:44

+0

同意,但我試圖將整個plist對象作爲整體或其所在的文件進行備份而不讀取它 – 2012-02-18 13:02:56

0

將設置讀入我自己的plist並將其保存到文檔目錄是一個選項,但看起來不雅觀且過於複雜。有沒有更好的辦法?

由於沒有官方的API(據我所知)直接支持你想要什麼,我覺得很優雅,不是很複雜,寫的幾行代碼是創建自己的.plist文件。查看yuji的答案是一個起點:只需一行,並且您已經有一本包含所有您想要的設置的字典。它可以獲得多少優雅? :-)

這可能不是您希望聽到的答案,但我的建議是:不要試圖與系統作鬥爭,您通常會長期失敗。