Core Data 的理解笔记
coreData是什么?
coreData 是一个用来管理model layer object(模型层对象)的一个框架,他提供了对对象的生命周期和对象图形化管理的共同任务的普遍的,自动的解决办法,包括持久化(persistence)。
创建一个 Managed Object Model
字面意思就是“被管理的对象模型”,根据document上的解释就是这个模型是实体描述对象的一个集合(实体描述是NSEntityDescription的一个实例对象),实体是什么?实体就是和我们所说的数据库里的表(table)是一样。
1.comm+n打开创建新的file,选择core data -> core data model (相当于创建一个数据库)
创建完成之后,会生成xx.xcdatamodeld文件
2.点击这个文件,点击Add Entity,添加一个实体,向实体中添加属性和类型
到此创建实体完成
3.创建实体类,选中实体->Editor->Create NSManagedObject Subclass 创建实体类完成
几个重要类
1.NSManagedObjectModel
> The NSManagedObjectModel instance describes the data that is going to be accessed by the Core Data stack. During the creation of the Core Data stack, the NSManagedObjectModel is loaded into memory as the first step in the creation of the stack.(摘自开发文档)
也就是说 这个类的实例对象描述的是一个即将去访问Core Data stack的数据,NSManagedObjectModel加载到内存中是创建core data stack 的第一步
2. NSPersistentStoreCoordinate
顾名思义,持久化存储协调器
Whereas the NSManagedObjectModel defines the structure of the data, the NSPersistentStoreCoordinator realizes objects from the data in the persistent store and passes those objects off to the requesting NSManagedObjectContext. The NSPersistentStoreCoordinator also verifies that the data is in a consistent state that matches the definitions in the NSManagedObjectModel.(摘自开发文档)
也就是说NSManagedObjectModel定义了数据的结构,NSPersistentStoreCoordinate实现了从持久化存储里的数据到对象,并且将这些对象提交到请求NSManagedObjectContext
3.NSManagedObjectContext
The managed object context (NSManagedObjectContext) is the object that your application will interact with the most, and therefore it is the one that is exposed to the rest of your application. Think of the managed object context as an intelligent scratch pad. When you fetch objects from a persistent store, you bring temporary copies onto the scratch pad where they form an object graph (or a collection of object graphs). You can then modify those objects however you like. Unless you actually save those changes, however, the persistent store remains unaltered.(摘自开发文档)
这个类是我们使用最多的一个类,我们可以把他想象成一个聪明的便笺本。当从存储器中取对象时,会把对象先拷贝在便笺本上,你可以随意修改这些对象,但是只有你保存了这些改变,持久化存储的内容才会发生变化