簡體   English   中英

在iPhone上保存數據的最佳方法

[英]Best way to save data on the iPhone

我正在編寫一個iPhone應用程序,需要保存我的應用程序狀態(5K左右)。

我主要擔心的是數據在升級過程中持續存在。 我使用的一些應用程序顯然錯了,我寧願不這樣做!

為了保存狀態,NSUserDefaults是要走的路。 我相信大多數(如果不是全部)應用程序數據實例在升級后被刪除是由於AppStore上的問題。 它們可能與數據格式更改有關,但如果您只使用NSUserDefaults和標准的plist-storable對象(NSString,NSDictionary,NSNumber,NSArray,NSNumber和基元),那么您應該是安全的。

有一種簡單的方法可以做到這一點來節省:

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

裝載:

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

重要的是,您不要在NSUserDefaults存儲非常大的值。 如果你這樣做,蘋果審查有可能遇到麻煩。

通常,用戶默認值用於存儲短鍵和首選項,例如用戶音量級別,他們想要使用游戲中心或發送崩潰日志。

這取決於你正在做什么和你的需求。

如果是少量數據,NSUserDefaults是一個很好的方法。 您還可以將字典或數組保存到應用程序文檔文件夾,然后在啟動時重新加載該文件。

SQLite很不錯,但除非你有很多你要查詢的數據,否則它只是保存狀態的頂部。

我使用sqlite來存儲所有應用程序數據和首選項。 要確保更新不擦除數據,請確保sqlite文件存儲在應用程序的Documents目錄中,而不會被升級覆蓋。 我提供的一些示例代碼(我認為“SQLite Books”)有代碼來處理這個問題。

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

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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