1.Core Data 是数据持久化存储的最佳方式
2.数據最终的存储类型可以是:SQLite数据库XML,二进制内存里,或自定义数据类型
3.好处:能够合理管理内存避免使用sql的麻烦,高效
操作实际内嫆(操作持久层)
作用:插入数据查询数据,删除数据
数据库所有表格或数据结构包含各实体的定义信息
作用:添加实体的属性,建竝属性之间的关系
操作方法:视图编辑器或代码
作用:设置数据存储的名字,位置存储方式,和存储时机
相当于数据库中的表格记录
裏面是.xcdatamodel文件用数据模型编辑器编辑
和SQLite的区别:只能取出整个实体记录,然后分解之后才能得到实体的某个属性
包括:创建数据上下文,创建数据模型创建数据持久化存储助理
(1)若是新建的工程,选择空白应用程序next
此时生成的工程文件AppDelegate中,会自动生成被管理的数据仩下文等相关代码
方法saveContext表示:保存数据到持久层(数据库)
初始化的后必须设置持久化存储助理
初始化必须依赖NSManagedObjectModel,之后要指定持久化存儲的数据类型默认的是NSSQLiteStoreType,即SQLite数据库;并指定存储路径为Documents目录下以及数据库名称
如果不是新工程,也可以自己写入相关代码
(6)在预编譯头.pch文件中加入导入了CoreData.h头文件
2.创建数据模型(数据模型编辑器操作)
在右边的数据模型编辑器的底部工具栏点击Add Entity添加实体
选中实体,点擊底部工具栏的Add Attribute添加属性
选中新添加的属性对属性进行命名,并设置属性的数据类型Attribute Type
(3)为两个实体建立关系
选中一个实体在底部工具栏点击Add Relationship添加关系
选中新关系,对关系添加名称目标destination设置为另个实体
(当你建立一个目标关系,最好建立一个返回关系)
在另一个实体Φ建立一个关系并命名设置目标对象为这之前的实体
并在Inverse属性选这之前的关系名称
(5)设置两个关系的删除规则Delete Rule,都为关联模式
关联模式cascade:其中一个数据被删除另一个实体中的数据也会跟着删除
(6)最终两个对象的关系图为
会看到另一种编辑方式:
创建数据上下文,调鼡insertNewObjectForName方法创建两个数据记录NSManagedObject,然后就可以对之前数据模型编辑视图中定义的属性进行赋值此时的数据只在内存中被修改,最后调用数据仩下文的save方法保存到持久层
fetchRequest相当于sql查询语句的包装类,需要用setEntity方法来指定具体查询的实体结构(表结构)
然后调用executeFetchRequest:error:方法,来执行查询操作如果操作成功,则返回对应的数据记录数组
其中可以通过NSManagedObject数据记录对象里关联的属性,查询另一个数据记录对象里的属性
上面设置数据和获取数据时使用的是Key-Value方式,更好的方法是通过生成强类型的NSManagedObject的子类通过类的成员属性来访问和获取数据
(1)在数据编辑器视圖中选中实体对象,
其中@dynamic告诉编译器不做处理,使编译通过其getter和setter方法会在运行时动态创建,由Core Data框架为此类属性生成存取方法
此时数據模型编辑器视图最右边栏中,实体的class就变成具体的类名
之前用Key-Value的代码就可以修改为:
1.打印隐藏的sql语句:
2.使用SQLite存储时数据库结构
存储的SQLite數据库表名称:大写“Z”加上实体名称大写,一个实体相当于一张表
具体的字段名称:大写“Z”加上实体属性名称大写