3.1. 修改托管对象模型(Core Data 应用程序实践指南)
托管对象模型是会变好的,有时候变化的比较小,什么添加验证规则、修改默认值、修改获取请求模板等。但是设置到结构变化,如添加、删除字段时,需要先把持久化数据区迁移到新的模型版本才行。假如没有提供迁移数据所需的映射与设定,那么应用程序就会崩溃。
程序修改,以引发模型不兼容错误
- 运行程序,确保创建了持久化存储区
- 选中Model.xcdatamodeld
- 添加Measurement新实体
- 添加abc属性,类型为String
- 重新运行程序,发现错误
reason=The model used to open the store is incompatible with the one used to create the store
- 如果没有错误,Product > Clean ,然后重复上面步骤
对于上面错误,开发者可以Clean之后重新安装,用户可以卸载重新安装。即使用户愿意这么做,他的数据也回丢失。显然,这是不科学的。有好几种方法迁移现有的数据化持久区,而迁移路径则是由变更的复杂程度以及是否使用iCloud等因素来决定的。
无论采用哪种迁移办法,我们都必须先熟悉 “模型版本控制”(model versioning)
修改程序:
- 删除Measurement实体
- 重新运行程序,应该就不会崩溃了
3.1. 修改托管对象模型(Core Data 应用程序实践指南)的更多相关文章
- 3. 托管对象模型的迁移(Core Data 应用程序实践指南)
本章介绍如何添加模型版本及模型映射,演示几种迁移技术,供在升级模型时使用. 3.1. 修改托管对象模型 3.2. 添加模型版本 3.3. 轻量级迁移方式 3.4. 默认的迁移方式 3.5. 通过迁移管 ...
- Core Data 应用程序实践指南(Core Data 应用程序实践指南)
译者序 前言 勘误 1. 初次尝试Core Data应用程序 本书的基础,基本概念,能做什么,不能做什么.实现CoreDataHelper类,演示如何将Core Data同既有的应用程序相集成. 2. ...
- 1.1.Core Data是什么(Core Data 应用程序实践指南)
Core Data是个框架,把数据当作对象来操作. 由Core Data提供的数据对象叫托管对象(managed objecgt),而Core Data 位于程序和持久化存储区之间. 托管对象模型里有 ...
- 2.1. 托管对象模型是什么(Core Data 应用程序实践指南)
托管对象模型是一种数据结构.在这里,数据结构.纲要.对象图.数据模型.托管对象模型这些术语是一个意思.它们是对同一个东西不同场景的描述.比如,对Core Data 而言是托管对象模型,对设计器来说是对 ...
- 1.1.2.托管对象模型(Core Data 应用程序实践指南)
托管对象模型即对象图,可以看成实体类的描述,规定了数据字段. 要想创建托管对象模型,需生成NSManagedObjectModel类的实例.
- 2.2. 添加托管对象模型(Core Data 应用程序实践指南)
右键分组Grocery Dude > New Group > Data Model New File > Core Data > 创建新的模板文件
- 1.4.1. Core Data Helper 简介(Core Data 应用程序实践指南)
有些支持Core Data的内置模板是在应用程序委托里面设置Core Data的.但是为了模块化,我们通过应用程序委托惰性地创建CoreDataHelper类的实例: 初始化托管对象模型 根据托管对象 ...
- 1.4.2.3. SETUP(Core Data 应用程序实践指南)
初始化Core Data的三个方法: init,初始化托管对象模型.持久化存储协调器.托管对象上下文 - (id)init { ) { NSLog(@"Running %@ '%@'&quo ...
- 2.5. Integer 16 、Integer 32、Integer 64(Core Data 应用程序实践指南)
Core Data 使用 “带符号的整数”,通常我们会选择Integer 32,如果不够,可以升级为Integer 64 (第3章),通过升级托管对象模型. 这三种类型对应的特性(Property)类 ...
随机推荐
- 自己用wireshark 抓了个包,分析了一下
我自把对应 ip 包的头部拿出来手动分析了一下 :)
- php url 伪静态
手册上说: 'PATH_INFO' 包含由客户端提供的.跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息,如果存在的话.例如,如果当前脚本是通过 URL http ...
- js浏览器兼容
//window.event IE:有window.event对象 FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMo ...
- django第一篇
摘要: 1 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.模型即后端逻辑,视图就是url对应的前端展示 2本文简介了使用模型 ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- elasticSearch indices VS type
elasticSearch 的中文文档 http://es.xiaoleilu.com/010_Intro/05_What_is_it.html https://www.elastic.co/blog ...
- COCOS2DX遇到的问题
1 新增类无法在别的类里面include到的问题: 去项目-> 配置属性-> C/C++-> 常规-> 附加包含目录中增加类的文件夹路径 2 新增类出现 extensions\ ...
- 内置Web Server
在终端输入命令:php -S localhost:8000 -t xxx(某个目录或文件) 这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境. URI请求会被发送到PHP所在的的工作目 ...
- C++异常(exception)第三篇-------如何释放资源(没有finally语句)
问题: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){},为什么没有finally{}块来释放资源? 如类中的一个方法,局部变量 File * file=NU ...
- STM32应用笔记转载
stm32 外部中断嵌套[操作寄存器+库函数] stm32 NVIC中断管理实现[直接操作寄存器] stm32 SPI通信[操作寄存器+库函数] stm32 i2c通信 [操作寄存器+库函数] stm ...