本章介绍如何添加模型版本及模型映射,演示几种迁移技术,供在升级模型时使用. 3.1. 修改托管对象模型 3.2. 添加模型版本 3.3. 轻量级迁移方式 3.4. 默认的迁移方式 3.5. 通过迁移管理器来迁移数据…
译者序 前言 勘误 1. 初次尝试Core Data应用程序 本书的基础,基本概念,能做什么,不能做什么.实现CoreDataHelper类,演示如何将Core Data同既有的应用程序相集成. 2. 托管对象数据模型的基本知识 传统数据库模式的设计与Core Data 之间的共性,并介绍数据模型.讨论实体(entity)和属性,配置基本的托管对象模型(managed object model).如何选择正确的数据类型.插入.获取.过滤.排序及删除托管对象.获取请求模板. 3. 托管对象数据模型…
Core Data是个框架,把数据当作对象来操作. 由Core Data提供的数据对象叫托管对象(managed objecgt),而Core Data 位于程序和持久化存储区之间. 托管对象模型里有对象图(object graph),对象图里有实体(实体类),实体创建托管对象. 托管对象持有一份相关数据的拷贝.可以看作数据库里某张表的某一行. 托管对象可以是NSManagedObject实例,但是一般情况下,它是某个NSManagedObject子类的实例. 所有托管对象都必须位于托管对象上下…
持久化存储协调器会试着用新版的模板打开原来的持久化存储区,但是那是旧的模板,旧的格式,当然会出错.现在要做的就是迁移现有的持久化数据区,以便跟新模型匹配. 怎么进行迁移呢? 在什么时候进行迁移? 在向NSPersistentStoreCoordinator添加存储区的时候. 那么如何添加呢? 答案是,将下列选项放到NSDictionary里传过去,就会自动完成存储区的迁移工作. 如果传给NSPersistentStoreCoordinator的NSMigratePersistentStoresA…
为了不像3.1那样崩溃,修改模型之前先创建新的模型版本.添加之后,会生成一个新的xcdatamodel文件,并且跟原来的内容完全一样,这有意思了,但是不要删除原来旧版的模型.旧的模型有助于把原来持久化存储区迁移到当前的模型版本. 修改程序: 选中Model.xcdatamodeld 点击Editor > Add Model Version... 点击Finish,默认将Model 2用作版本名称 如图: 注意,我们要修改新的模板,慢慢进入正题了: 注意备份程序 选择Model 2.xcdatam…
可供配置的选项根据属性类型的不同有所变化,并不是每一种属性都能配置下列选项 Transient:勾选该选项,表示该属性不写入“持久化存储区”,这听起来很奇怪,但有时候,只需要把特性留在托管对象上下文就行了. Opitional:optional特性并不一定要有值.所有特性再刚创建的时候都是optional特性.如果某个特性不是optional特性,那么它在写入存储区的时候必须要具备有效的值才行. Indexed:系统会优化Indexed特性以提高搜索效率,但是缺点是要在存储区占用更多的空间.并且…
项目创建时会有 “Use Core Data" ,但是,有时没有勾选这个选项,那么就要手动链接Core Data Framework. 选中 Grocery Dude Target General > Linked Frameworks and Libraries > + ,选择CoreDataFramework 1.4.1. Core Data Helper 简介 1.4.2. 实现 Core Data Helper 类…
如果应用程序要保存的设置数据太多,以致NSUserDefaults及“属性列表“(property list)这种简单的存储方案无法应付.不需要再"重新发明轮子"(reinventing the wheel),使用Core Data即可.…
持久化存储协调器(persistent store coordinator)里面包含一份持久化存储区,而存储区里又含有数据表里的若干行数据. 与原子存储不同,SQLite数据库会在用户提交变更日志时进行增量变更,变更日志也叫事务日志. 持久化存储区只应由Core Data 创建,不应该让Core Data 使用不由它创建的数据库.如果需要使用既有的数据,应该将其导入Core Data(第8章). 同一个持久化存储协调器可以有多个持久化存储区.可以把属于iCloud的数据放到一个存储区,不属于iC…
托管对象模型是一种数据结构.在这里,数据结构.纲要.对象图.数据模型.托管对象模型这些术语是一个意思.它们是对同一个东西不同场景的描述.比如,对Core Data 而言是托管对象模型,对设计器来说是对象图.…