1.介绍
coredata是一种ORM(对象关系映射)技术。
其中有两个关键的模型是关系数据模型和对象模型。
2.coreData 堆栈
在xcode项目上添加coredata 时,会自动在appdelegate上生成三个成员属性以及两个方法。
分别是
NSManagedObjectModel 的属性是被管理对象模型类,而NSPersistentStoreCoordinator 是持久化存储协调器类。
NSManagedObjectContext 是被管理对象上下文类。
两个方法:
saveContext 以及 applicationDocumentsDirectory.
saveContext 是保存被管理对象上下文(当对象被进行一些数据修改之后)。
applicationDocumentsDirectory 是获取应用程序沙箱目录。
Persistent Object Store (POS) 持久化对象存储,将对象转化为数据,它有三种实现方式SQLite,二进制文件以及内存形式。
MOM,PSC,MOC,POS这四个部分共同组成了coredata 堆栈。
3.建模和生成实体
模型:datamodel 建立xcdatamodeld数据文件,添加实体类,点击实体类,将它与被管理对象绑定,再创建被管理对象。
采用分层架构设计时,coredata 只能放置在持久层里面。
之前在appdelegate中自动生成的代码将其移植到 coredata中来。
查询数据,所需要用到的代码:
NSManagedObjectContext * cxt = [self mangedObjectContext];获取上下文。
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Note" inManagedObjectContext:cxt];获取描述类;
NSFetchRequest * fetchRequest = [[ NSFetchRequest alloc] init]; 获取请求类。
将描述对象添加到请求类当中:
fetchRequest.entity = entity.
依据请求对象fetchRequest 执行查询,并获取NSArray对象。
NSError * error = nil;
NSArray *listData = [cxt executeFetchRequest:fetchRequest error:&error];
listData 对象存储的是NoteManagedObject实体对象,用下面的代码将NoteManagedObject转换为note对象。