2008-11-20 44 views

回答

30

要保存狀態,NSUserDefaults是要走的路。我相信大多數(如果不是全部的話)應用程序數據實例在升級之後由於AppStore上的問題而被刪除。它們可能與數據格式的變化有關,但是如果你只使用NSUserDefaults和標準的plist-storable對象(NSString,NSDictionary,NSNumber,NSArray,NSNumber和primitives),你應該是安全的。

0

保存狀態(數據,應用程序信息等)最常見的方式是使用Sqlite3。我不確定更新會如何清除它,但更新過程可能會覆蓋數據文件。

另一種選擇是使用UserPrefs(NSUserDefaults)。同樣,我不確定最大尺寸,或者即使它適合您需要堅持的數據。

+0

我想你的意思是NSUserDefaults – 2008-11-21 01:00:47

+0

是的。哎呦。將編輯 – JamesSugrue 2008-11-21 01:23:44

4

我使用sqlite來存儲所有的應用程序數據和首選項。爲確保更新不會擦除數據,請確保sqlite文件存儲在應用程序的Documents目錄中,該目錄不會被升級覆蓋。 Apple提供的一些示例代碼(我認爲是「SQLite Books」)提供了代碼來處理此問題。

6

這真的取決於你在做什麼和你的需求。

如果是少量數據NSUserDefaults是一個很好的選擇。您還可以將字典或數組保存到應用程序的Documents文件夾中,然後在啓動時重新加載該文件。

SQLite很好,但除非你有很多你要查詢的數據,否則只是保存狀態而已。

2

對於少量數據NSUserDefaults是一個完美的解決方案,如果您需要特別查詢數據,那麼sqlite是最佳選擇。這兩種解決方案非常適合在設備上存儲數據,如果您需要更多的靈活性和功能,您可以考慮遠程數據,即Web服務和服務器數據庫。

1

Here是一個討論的鏈接,提供了一個非常好的示例來說明如何訪問您的數據以及哪種類型的存儲方案在某些情況下更有利。 @Ben Gottlieb的解決方案是針對性的,我只是認爲這個問題會增加額外的資源。希望這可以幫助!

12

有一個簡單的方法來做到的正是這種 爲了節省:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:@"TextToSave" forKey:@"keyToFindText"]; 

加載:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSString *textToLoad = [prefs stringForKey:@"keyToFindText"]; 

重要的是,你沒有非常大的值存儲在NSUserDefaults。如果你這樣做,蘋果評論有可能會陷入麻煩。

通常,用戶默認值用於存儲短鍵和首選項,例如用戶音量級別,他們想要使用遊戲中心還是發送故障日誌。

相關問題