title: Coredata 使用
date: 2016-10-25 22:46:23
categories: iOS
tags:
- 持久化
- CoreData
Coredata 使用
简单的使用都可以从网上找到教程
Core Data是应用模型、持久化和大量对象图查找的最佳选择
它是专门针对模型层做的一个框架.
根据教程做卡到的地方和 bug 记录:
stuck: 在设置实体时, 实体间有一对多的关系:
在属性那栏即右边工具栏 option+command+0打开, 最右边那标签下有选择 type, 选择 toMany 即可
stuck: 在改变了实体的一些属性后怎么更新?
直接在可视化中修改后, 新建subClass 文件, xcode 会自动更新对应的分类, 而类文件不变, 类文件不变就会有个问题, 在添加关系后, 因为是引用别的类, 但是自己的类头文件没有声明这个类会报错
stuck: 但是这样的话, 如果是在已经存有数据的情况下, 再修改模型, 会不会在存储中的模型图和新的对应不上, 那些更多的数据怎么办, 这时需要数据迁移
http://www.jianshu.com/p/49872694e0b3
https://objccn.io/issue-4-7/
http://www.bozhiyue.com/anroid/boke/2016/0602/173699.html
关于第三方库 MagicRecord 的中文说明
深入点的分析及 Demo
推荐开源库
快速使用
快速使用2
其他资料
在这之前, 要使用 coredata, 需要有这么一个环境来保存你项目中所需要的所有需要被 coredata 管理的模型类, 要有这个环境, 也就是使用这个 coredata 这个专门针对模型层的框架, 需要在项目中新建一个Coredata Model 对象, 里面会给你新建实体, 相当于你设置的模型类, 类中的其他对象属性就相当于里面的相关实体. ….目前暂时不知道怎么设置实体间的继承关系
使用它主要有这几个类需要了解, 可以这么理解, 和之前学的比较能接上轨
- 将需要的组件创建出来形成的 coredata 堆栈
- NSManagedObjectModel: 整个框架的操作通过这个 Model 类来先访问我们创建的对象模型图, 刚我们创建的文件里的实体连接了对应的类, 那个模型文件还要放到内存来操作, 对没有访问过的模型, 有的话就从这里拿而不会去调用 SQL 数据库, 但是, 一般我们只是把它加载进来, 不去对其直接操作
- NSPersistentStoreCoordinator: 持久化存储调度器, 沟通模型图逻辑关系管理的 Context 和操作底层数据库实现的store, 可以说是枢纽吧, 同时, 还需要设置一个数据库, 添加操作数据库的 URL, 没有的话会自己创建
- NSManagedObjectContext: 这个 Context 用于管理模型图的逻辑关系, 其通过调度者 cordinator 来与存储部分进行交流, 一般我们对模型对象的保存就是通过这个操作的