文件存儲有四種方案: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支持對一、對多的關系。