Core Data 基础(图解一)

作者: 李周 | 来源:发表于2017-03-08 16:26 被阅读68次

这几天想仔细的学习一下CoreData的部分,网络上有很多的资料。看完之后把第一部分基础重点用几张图表示,希望帮助别人能更快的理解。

第二篇 CoreData的多线程


1.什么是CoreData

Core Data本身既不是数据库也不是数据库访问框架,而是一个完整的数据模型解决方案。可以理解为对持久层的封装,使得我们可以通过可视化建立数据模型,不仅支持SQLite数据库,还能对XML文件、二进制文件、用户自定义文件进行操作。

2.几大重点属性

属性关系

其实之前说了CoreData是对持久层的一个封装,以sqlite数据库理解:

NSManagedObjectContext 是对数据库数据操作的手柄,封装了我们理解的增删改查。需要注意的一点就是:在我们做任何操作的时候,其实都是把操作缓存在内存中,直到我们调用save方法的时候,才会映射到持久层。

NSManagedObjectModel类似于数据库的轮廓,包括了数据库内部各个实体的定义信息。

NSPresistentStoreCoordinator类似于数据库的外部处理器,包括设置数据存储的名字和位置,数据存储的时机。

理解了三者都是做什么的,都很好理解三者的创建顺序:

创建顺序

3 可视化界面

创建一个实体

创建实体的界面

其中属性里面type类型,从网上找到相关的资料:

Undefined: 默认值,参与编译会报错

Integer 16: 整数,表示范围 -32768 ~ 32767

Integer 32: 整数,表示范围 -2147483648 ~ 2147483647

Integer 64: 整数,表示范围 –9223372036854775808 ~ 9223372036854775807

Float: 小数,通过MAXFLOAT宏定义来看,最大值用科学计数法表示是 0x1.fffffep+127f

Double: 小数,小数位比Float更精确,表示范围更大

String: 字符串,用NSString表示

Boolean: 布尔值,用NSNumber表示

Date: 时间,用NSDate表示

Binary Data: 二进制,用NSData表示

Transformable: OC对象,用id表示。可以在创建托管对象类文件后,手动改为对应的OC类名。使用的前提是,这个OC对象必须遵守并实现NSCoding协议

一个属性的创建

属性的设置

4 注意点

1)对于一个创建的CoreData工程,里面有一个.xcdatamodeled模板文件,在编译之后会产生两个文件:

一个放在document文件夹下的sqlite文件:

一个放在mainBundle路径下的:

2)增删改查

增:创建一个实体,然后交给context上下文处理:

增加一个实体的操作

删改查:先找到你想要删或改的实体,然后进行操作,最后交给context上下文处理:

删除一个实体的操作

一定要在操作之后进行save操作,不然所有的操作结果都只是在缓存中,没有进入持久层:

我想这也是为什么我们在保存一个oc对象的时候,需要该对象遵循NSCoding协议。

3) 实体间的关系

两个实体:Employee和Department

在创建的时候,有一个问题:

需要双向设置吗?

不需要,当我设置了[department addEmployeeObject:employee];的时候,coredata会自动的实现下面的语句,最后employee.department的打印结果如下:


第一篇简单的解释了一下我理解的CoreData的基础信息,想要了解更多的话可以参考:

认识CoreData

初始CoreData

相关文章

网友评论

    本文标题:Core Data 基础(图解一)

    本文链接:https://www.haomeiwen.com/subject/aobbgttx.html