Core data 浅析
类似于之前使用过的FMDB,是苹果自带的,管理数据库的工具。
使用原因:
它能让你为model层写的代码更简洁,无需优化,无需测试。
Core data
能利用model层的信息和运行时的特性,而不是通过过程层的代码实现的。
除了能提供强大的安全支持和错误处理外,它还提供了最优的内存扩展性,可实现有竞争力的解决方案。
主要是iOS对sqlite数据库的封装。
有对象一一关系的映射功能,能把oc的对象存储成数据库或xml等。
读取时不需要使用sql语句。
误解:
不是关系型数据库,也不是关系型数据库管理系统(RDBMS),core data为数据变更管理,对象存储,对象读取恢复功能提供了支持。它可以使用sqlite做为持久化存储的类型、它本身不是一个数据库。
代码步骤:
1.导入库<core data.framework> 和 <core data/core data.h >
2.这样托管对象模型知道所有当前工程中用到的托管对象的定义,创建一个NSmanaged ObjectModel数据模型文件
1>创建数据模型文件->new file ->core data ->选中data model,创建文件(user.xcdatamodeld)
2>创建跟数据模型文件关联的数据模型类,new file ->core data ->选中NSManaged object of subclass ->关联上user.xcdatamodeld数据模型文件中的usermodel
3.(用代码初始化coredata)
1>导入<core data/core data.h >
2>从沙盒包内 读取数据模型文件
A.获取到coredata文件的路径,并转化为URL
//在包内user.xcdatamodeld会转化为user.momd
路径:NSString *coredatapath = [[NSBundle mainBundle] pathForResource:@”user” ofType:@”momd”];
加载文件中数据:
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfUrl:[NSUrl fileUrlWithPath:coredatapath]];
b.NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundels:nil];中nil表示连接项目中所有的.xcdatamodeld文件为一个datamodel这是一个非常好的方法,把多个entity放在各自的xcodemodel文件中分开管理,然后用这个函数连接起来生成一个datamodel,这样就可以对应一个persistentstore
3>创建协调器
NSPersistentStoreCoordinator *coordinator =[ [NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
4>将coreData数据映射到数据库
1.找到数据库路径(并创建该文件)
NSString *path = [NSString stringWithFormat:@”%@/Documents/user.sqlite”,NSHomeDirectory];
2.将数据库和模型文件关联上
NSPersistentStore *store = [coordinaor addPersistentStrore withType:NSSqlitestore TypeConfiguration:nil URL:[NSURL fileURLWithPath:path] option:nil error:nil];
5> 创建上下文托管对象,增删改查,通过上下文对象操作的
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
context.persistentStoreCoordinator = coordinator;
Magocal Record 第三方库
作用:专门操作coredata
步骤:
1>初始化操作,创建数据模型文件
2>根据数据模型文件创建关联的数据模型类
1.导入头文件<magicalRecord.h>
2.在APPDelegate中初始化数据库
[MagicalRecord setUpCoreDataStackWithAutoMogratingSqliteStoreNamed:@”sqlite”];
3.增删改查
增:根据coredata模型创建对象
Eg. UserModel *item = [UserModel MR_createEntity];
存到数据库
[[NSManagedObjectContext MR_defaultContext] MR_saveTopersistentStoreAndWait];
来源:oschina
链接:https://my.oschina.net/u/2532095/blog/628516