39(0)數據存儲

文件存儲有四種方案:NSUserDefault,KeyChain,File,DB

File :plist,Archiver,Stream

DB: CoreData和 FMDB


Plist(NSArray/NSDictionary)存入到文件

Preference(系統的偏好設置/NSUserDefault)? 用于存儲配置信息

NSCoding(NSKeyedArchiver/NSKeyedUnarchiver) 歸檔解檔

FMDB:是對SQLite3的封裝,這里FMDB引入了一個MFDatabase對象來表示數據庫,打開數據庫和后面的數據庫操作全部依賴此對象。 用于存儲查詢需求較多的數據

一般來說應用中的格式化的文本類數據可以存放在數據庫 中,尤其是類似聊天記錄、Timeline等這些具有條件查詢和排序需求的數據。

Core Data? 用于規劃應用中的對象? 是一個管理方案,它的持久化可以通過SQLite、XML或二進制文件儲存。它可以把整個應用中的對象建模并進行自動化的管理。從歸檔文件還原模型時CoreData并不是一次性把整個模型中的所有數據都載入內存,而是根據運行時狀態,把被調用到的對象實例載入內存。框架會自動控制這個過程,從而達到控制內存消耗,避免浪費。 無論從設計原理還是使用方法上看,CoreData都比較復雜。因此,如果僅僅是考慮緩存數據這個需求,CoreData絕對不是一個優選方案


CoreData的使用場景在于:整個應用使用CoreData規劃,把應用內的數據通過CoreData建模,完全基于CoreData架構應用。

使用基本對象類型定制的個性化緩存方案:從需求出發分析緩存數據有哪些要求:按Key查找,快速讀取,寫入不影響正常操作,不浪費內存,支持歸檔。這些都是基本需求,那么再進一步或許還需要固定緩存項數量,支持隊列緩存,緩存過期等。


iOS平臺怎么做數據的持久化?coredata和sqlite有無必然聯系?coredata是一個關系型數據庫嗎?

iOS中可以有四種持久化數據的方式: 屬性列表、對象歸檔、SQLite3和Core Data

coredata可以使你以圖形界面的方式快速的定義app的數據模型,同時在你的代碼中容易獲取到它。

coredata提供了基礎結構去處理常用的功能,例如保存,恢復,撤銷和重做,允許你在app中繼續創建新的任務。

在使用coredata的時候,你不用安裝額外的數據庫系統,因為coredata使用內置的sqlite數據庫。

coredata將你app的模型層放入到一組定義在內存中的數據對象。

coredata會 追蹤這些對象的改變,同時可以根據需要做相應的改變,例如用戶執行撤銷命令。

當coredata在對你app數據的改變進行保存的時 候,core data會把這些數據歸檔,并永久性保存。

mac os x中sqlite庫,它是一個輕量級功能強大的關系數據引擎,也很容易嵌入到應用程序。可以在多個平臺使用,sqlite是一個輕 量級的嵌入式sql數據庫編程。

與coredata框架不同的是,sqlite是使用程序式的,sql的主要的API來直接操作數據表。

Core Data不是一個關系型數據庫,也不是關系型數據庫管理系統(RDBMS)。

雖然Core Dta支持SQLite作為一種存儲類型, 但它不能使用任意的SQLite數據庫。

Core Data在使用的過程種自己創建這個數據庫。Core Data支持對一、對多的關系。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容