6.4 数据模型
iOS 8开发指南
Core Data抽象了应用程序和底层数据存储之间的交互。它还包含一个Xcode建模工具,该工具像Interface Builder那样可帮助我们设计应用程序,但不是让我们能够以可视化的方式创建界面,而是让我们以可视化方式建立数据结构。Core Data是Cocoa中处理数据、绑定数据的关键特性,其重要性不言而喻,但也比较复杂。
下面先给出一张如图6-1所示的类关系图。
在图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 和 NSPersistentStore-
Coordinator 对象,前者对用户透明地调用后者对数据文件进行读写。
(3)NSPersistentStoreCoordinator从数据文件(XML、SQLite、二进制文件等)中读取数据生成 Managed Object,或保存Managed Object写入数据文件。
(4)NSManagedObjectContext对数据进行各种操作的整个过程,它持有 Managed Object。我们通过它来监测 Managed Object。监测数据对象有两个作用:支持 undo/redo 以及数据绑定。这个类是最常被用到的。
(5)Array Controller、Object Controller和Tree Controller等控制器一般与 NSManagedObjectContext 关联,因此可以通过它们在nib 中可视化地操作数据对象。