Core Data Best Practice
基础知识
1、What is Core Data?
Core Data 其实并不是一个传统意义上的数据库,而是一套数据对象管理系统。这套系统默认使用 SQLite 作为底层存储,由低向高构建一套管理组件栈,并提供缓存和对象管理机制
2、基本概念
- NSManagedObject 托管对象
Managed Objec数据对象,与上下文Managed Object Context相关联。
- NSManagedObjectModel 数据模型描述集合
Managed Object Model 是描述应用程序的数据模型,这个模型包含实体(Entity),特性(Property),读取请求(Fetch Request)等。
- NSManagedObjectContext 托管上下文
Managed Object Context 参与对数据对象进行各种操作的全过程(CRUD),并监测数据对象的变化,以提供对 undo/redo 的支持及更新绑定到数据的 UI
- NSPersistentStoreCoordinator 持久化存储协调器
Persistent Store Coordinator 相当于数据文件管理器,处理底层的对数据文件的读取与写入。
- NSPersistentStore 持久化存储
持久存储抽象层,将Requset转化为具体的SQL语句操作数据库
- SQLite 数据库
3、Core Data 栈
一个基本的 Core Data 栈由四个主要部分组成:托管对象,托管对象上下文,持久化存储协调器,以及持久化存储。
Best Practice
- Modernizing Core Data
- Evolving containers
- Matching models with views
- Managing growth
- Potpourri
Core Data现代化 (Modernizing Core Data)
- 旧有的构建Core Data方式
- 创建Managed Object Model
- 创建Persistent Store Coordinator
- 创建Managed Object Context 并关联到 Persistent Store Coordinator
- 创建 Persistent Store 并添加到 Persistent Store Coordinator
- 使用NSPersistentContainer
苹果方面建议是在AppDelegate里面以懒加载的方式引入NSPersistentContainer。初始化一个新项目,勾选默认使用Core Data,Xcode会自动生成相应代码
扩展NSPersistentContainer(Evolving Containers)
- 指定Managed Object Model
存在多个xcdatamodeld文件,或者framework中的bundle中有xcdatamodeld文件,可用指定Managed Object Model的方式加载
- 小技巧:继承NSPersistentContainer 重载指定路径