本节书摘来自异步社区《ios 8开发指南(第2版)》一书中的第6章,第6.4节数据模型,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.4 数据模型
ios 8开发指南(第2版)
core data抽象了应用程序和底层数据存储之间的交互。它还包含一个xcode建模工具,该工具像interface builder那样可帮助我们设计应用程序,但不是让我们能够以可视化的方式创建界面,而是让我们以可视化方式建立数据结构。core data是cocoa中处理数据、绑定数据的关键特性,其重要性不言而喻,但也比较复杂。
下面先给出一个如图6-1所示的类关系图。

(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 中可视化地操作数据对象。