iOS數(shù)據(jù)存儲之Core Data(一)
Core Data 基礎(chǔ)
Core Data 是一個API集合,被設(shè)計用來簡化數(shù)據(jù)對象的持久存儲。Core Data 提供一種模型用于保存模型對象并在之后取回他們。Core Data 還管理對對象模型的改變,提供撤銷支持,并確保模型對象間關(guān)系的一致性。
Core Data 架構(gòu)

上圖是Core Data的設(shè)計概覽。其中的關(guān)鍵組件是數(shù)據(jù)存儲(data store)、持久存儲協(xié)調(diào)器(Persistent Store Coordinator)、托管對象模型(Managed Object Model)和托管對象上下文(Managed Object Context)。
1. 數(shù)據(jù)存儲
數(shù)據(jù)存儲是保存數(shù)據(jù)的一個或一組文件。它是當(dāng)保存消息發(fā)送到Coredata 后實際寫入到磁盤的文件。通常在移動應(yīng)用程序中只有一個數(shù)據(jù)存儲文件。
依賴于創(chuàng)建數(shù)據(jù)存儲時使用的參數(shù),數(shù)據(jù)存儲可以是一個二進制文件、SQLITE數(shù)據(jù)庫或一個內(nèi)存中的數(shù)據(jù)文件。
2. 持久存儲協(xié)調(diào)器
持久協(xié)調(diào)存儲器在托管對象上下文和數(shù)據(jù)存儲之間扮演中間人的角色。協(xié)調(diào)器從上下文中獲得數(shù)據(jù)請求并將它們轉(zhuǎn)發(fā)給合適的數(shù)據(jù)存儲,協(xié)調(diào)器還允許上下文訪問多個數(shù)據(jù)存儲。協(xié)調(diào)器將數(shù)據(jù)存儲和上下文關(guān)聯(lián)在一起。持久存儲協(xié)調(diào)器是NSPersistentCoordinator類的實例。持久存儲協(xié)調(diào)器不是線程安全的。
3. 托管對象模型
托管對象模型代表數(shù)據(jù)模型架構(gòu),是NSManagedObjectModel類的實例。
模型由一組實體組成,他們定義了應(yīng)用程序中的數(shù)據(jù)對象。數(shù)據(jù)模型通常使用XCode的提供的圖形化數(shù)據(jù)建模工具創(chuàng)建。數(shù)據(jù)模型應(yīng)該定義程序中使用的數(shù)據(jù)對象。持久協(xié)調(diào)存儲器依據(jù)數(shù)據(jù)模型中定義的約定創(chuàng)建托管對象。
4. 托管對象上下文
托管對象上下文提供訪問托管數(shù)據(jù)對象的接口,托管對象上下文是NSManagedObjectContext類的實例。上下文用于保存所有托管對象,托管對象是NSManagedObject類或其之類的實例??梢栽谏舷挛闹刑砑訉ο蟆h除對象、修改對象,當(dāng)準(zhǔn)備好后,可以讓上下文將當(dāng)前狀態(tài)提交到磁盤保存??梢栽谏舷挛闹袆?chuàng)建獲取請求將數(shù)據(jù)從存儲中取回到上下文,進而對數(shù)據(jù)進行處理。