core data浅析

会有一股神秘感。 提交于 2020-03-06 14:06:06

Core data 浅析

   类似于之前使用过的FMDB,是苹果自带的,管理数据库的工具。

 

   使用原因:

它能让你为model层写的代码更简洁,无需优化,无需测试。

 

 Core data 

能利用model层的信息和运行时的特性,而不是通过过程层的代码实现的。 

除了能提供强大的安全支持和错误处理外,它还提供了最优的内存扩展性,可实现有竞争力的解决方案。

主要是iOSsqlite数据库的封装。 

有对象一一关系的映射功能,能把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];

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!