簡體   English   中英

在iPhone Core Data或SQLite中存儲長期數據的最佳方法是什么?

[英]What is best way to store long term data in iPhone Core Data or SQLite?

我正在開發定位於3.1.3和更高版本SDK的iPhone應用程序。 我想知道在不損失性能,一致性和安全性的情況下在iphone上存儲用戶長期數據的最佳方法。

我知道我可以使用Core Data,PList和SQL-Lite以自定義格式存儲用戶特定的數據。但是,我想知道在不損害應用性能和可伸縮性的情況下使用哪種是好的。

這取決於。 術語“用戶數據”涵蓋了大小,復雜性和用途的廣泛范圍,每個方面都有不同的最佳存儲策略。

(1)如果大小和復雜度較低,並且使用主要是控制應用程序本身,請使用NSUserDefaults將數據存儲在用戶默認值中。

(2)如果大小較小並且可以通過數組,字典等管理復雜性,則將其存儲在plist中。 大小很重要,因為存儲在plist中的所有數據都以一個塊的形式加載到內存中。

(3)如果大小很大,但是復雜度很低,例如,大量模板記錄,例如索引卡系統,則使用直接SQL。 SQL在大型數據庫中查找和保存簡單且重復的信息的速度更快。

(4)如果復雜度很高,則無論大小如何都使用Core Data。 核心數據專門用於管理復雜信息。 如果大小較小,請使用xml存儲。 如果很大,請使用SQL存儲。

隨着我對Core Data的熟悉,我發現除了用戶默認值之外,幾乎所有東西都使用它。 它具有陡峭的學習曲線,但是一旦掌握了它,您將擁有一個功能強大且易於使用的工具來管理應用程序數據。 我可能會在它不是最佳的情況下使用它,因為它會加快開發時間。

我不得不不同意TechZen的名單。 如果要處理舊版SQLite數據庫,則數字3僅是一個正確的答案。 從來沒有理由選擇原始sqlite而不是Core Data。 核心數據在幾乎每種情況下都將表現更好,並且將使您必須編寫的代碼量大大減少。

另外,我會警告不要使用塑料夾。 它們的讀寫成本很高,並且在幾乎每種情況下,Core Data數據庫都將勝過它們。

至於使用Core Data,除非在最極端的情況下,否則應始終使用SQLite后端(iOS上不提供XML)。

簡而言之,如果要保存單個值,請將其存儲在NSUserDefaults

否則,請使用核心數據。

更新資料

目前,使用Core Data不能比目前的原始SQLite擁有更出色的功能。 這就是在成千上萬的行中更新單個列的值的能力。 那是因為修改一行,Core Data將該行加載到內存中,然后再次寫回。

對於其他每種情況,與編寫自己的訪問器,對象以及處理其內存和生命周期相比,使用核心數據將獲得更好的性能。

核心數據將勝過您將要編寫的任何數據訪問器,並且它將以比您更好的方式處理對基礎文件的寫入和讀取。 為什么要重新發明輪子?

暫無
暫無

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

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