天天看點

《iOS 8開發指南(第2版)》——第6章,第6.4節資料模型

本節書摘來自異步社群《ios 8開發指南(第2版)》一書中的第6章,第6.4節資料模型,作者 管蕾,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

6.4 資料模型

ios 8開發指南(第2版)

core data抽象了應用程式和底層資料存儲之間的互動。它還包含一個xcode模組化工具,該工具像interface builder那樣可幫助我們設計應用程式,但不是讓我們能夠以可視化的方式建立界面,而是讓我們以可視化方式建立資料結構。core data是cocoa中處理資料、綁定資料的關鍵特性,其重要性不言而喻,但也比較複雜。

下面先給出一個如圖6-1所示的類關系圖。

《iOS 8開發指南(第2版)》——第6章,第6.4節資料模型

(1)managed object model

managed object model是描述應用程式的資料模型,這個模型包含實體(entity)、特性(property),讀取請求(fetch request)等。

(2)managed object context

managed object context參與對資料對象進行各種操作的全過程,并監測資料對象的變化,以提供對 undo/redo 的支援及更新綁定到資料的 ui。

(3)persistent store coordinator

persistent store coordinator 相當于資料檔案管理器,處理底層的對資料檔案的讀取與寫入,一般我們無需與它打交道。

(4)managed object managed object資料對象

與 managed object context相關聯。

(5)controller圖中綠色的array controller、object controller和tree controller

這些控制器一般都是通過“control+drag”将managed object context綁定到它們,這樣就可以在 nib 中以可視化地方式操作資料。

上述子產品的運作流程如下所示。

(1)應用程式先建立或讀取模型檔案(字尾為xcdatamodeld)生成 nsmanagedobjectmodel 對象。document應用程式是一般是通過 nsdocument 或其子類 nspersistentdocument)從模型檔案(字尾為 xcdatamodeld)讀取。

(2)然後生成 nsmanagedobjectcontext 和 nspersistentstorecoordinator 對象,前者對使用者透明地調用後者對資料檔案進行讀寫。

(3)nspersistentstorecoordinator從資料檔案(xml、sqlite、二進制檔案等)中讀取資料生成 managed object,或儲存managed object寫入資料檔案。

(4)nsmanagedobjectcontext對資料進行各種操作的整個過程,它持有 managed object。我們通過它來監測 managed object。監測資料對象有兩個作用:支援 undo/redo 以及資料綁定。這個類是最常被用到的。

(5)array controller、object controller和tree controller等控制器一般與 nsmanagedobject-context 關聯,是以,可以通過它們在nib 中可視化地操作資料對象。