CoreData(数据库升级 )版本迁移-iOS App升级安装

Posted brave-sailor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CoreData(数据库升级 )版本迁移-iOS App升级安装相关的知识,希望对你有一定的参考价值。

如果ios App 使用到CoreData,并且在上一个版本上有数据库更新(新增表、字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下:

1.选中你的mydata.xcdatamodeld文件,选择菜单editor->Add Model Version  比如取名:mydata2.xcdatamodel

2.设置当前版本

   选择上级mydata.xcdatamodeld ,在inspector中的Versioned Core Data Model选择Current模版为mydata2

3.修改新数据模型mydata2,在新的文件上添加字段及表

4.删除原来的类文件,重新生成下类。

在appdelegate中


首先说明技术分享:我的 "CoreData_New.xcdatamodeld"---实体模型已经被我从Model.xcdatamodeld迁移到了Model2.xcdatamodeld,现在我想迁移到Model3.xcdatamodeld

开始操作之前如图:

技术分享

具体操作如下:

第一步:选中原版本操作如图

技术分享



第二步:选中Add Model Version。。。,会出现下图

技术分享

注意:你会看到,你新建的实体模型文件会依据你的上一个版本新建的。如果前面有很多版本,请选择你想哪一个依据哪一个新建,选上默认的上一个就可以了,不然你选上更早的版本,数据肯定会丢失

第三步:点击完成会现在下图新的实体模型 Model3.xcdatamodeld,里面的数据会跟原来那个一模一样

技术分享

第四步:现在就可以进行你的数据对象操作了,具体数据这里就不进行操作了

技术分享

第五步:现在我们进行选择迁移后的版本,进入下图第一个界面,点开Model Version,里面会有你以前的版本,选择你修改了数据的新版本即可

技术分享   技术分享


第六步:选好之后,如下图效果

技术分享


第七步:现在进行代码操作

1,options系统默认的options是nil,点击去API发现是个字典,所以我们需要创建一个字典对象

我再细化点:进去API之后再COMMAD+F在搜索栏输入autom

技术分享技术分享

2,选择一直enter键,找到如下图

技术分享


第八步:代码如下图

技术分享

第九步:按照上图修改代码即可,完成,运行成功。


其他补充,

 CoreData中使用的几个类。
 (1)NSManagedObjectModel(被管理的对象模型)
 相当于实体,不过它包含 了实体间的关系
 (2)NSManagedObjectContext(被管理的对象上下文)
 操作实际内容
 作用:插入数据  查询  更新  删除
 (3)NSPersistentStoreCoordinator(持久化存储助理)
 相当于数据库的连接器
 (4)NSFetchRequest(获取数据的请求)
 相当于查询语句
 (5)NSPredicate(相当于查询条件)
 (6)NSEntityDescription(实体结构)
 (7)后缀名为.xcdatamodel的包
 里面的.xcdatamodel文件,用数据模型编辑器编辑
 编译后为.momd或.mom文件,这就是为什么文件中没有这个东西,而我们的程序中用到这个东西而不会报错的原因

注意:coreData是对象关系型数据库,最大的缺点是线程关系,可以以二进制、数据库、XML格式存储,可以有版本迁移,这个比SQL好,SQL是数据库存储,对象型数据库
 
    "CoreData_New.xcdatamodeld"---实体模型文件
    SQL 给的是字符串,CoreData给的是URL


/**coreDta步骤
 *  1 创建文件模型文件
 *  2 添加实体
 *  3 创建实体类
 *  4 生成上下文,并联数据模型,生成数据库
 *
    注意:coreData是对象关系型数据库,最大的缺点是线程关系,可以以二进制、数据库、XML格式存储,可以有版本迁移,这个比SQL好,SQL是数据库存储,对象型数据库
 
    "CoreData_New.xcdatamodeld"---实体模型文件
    SQL 给的是字符串,CoreData给的是URL
 */

其他:下图感谢博主分享:http://mrydblog.com/

技术分享


注意:这是个人习惯操作,仅供参考,如有错误,请留言指出。



















































以上是关于CoreData(数据库升级 )版本迁移-iOS App升级安装的主要内容,如果未能解决你的问题,请参考以下文章

iOS CoreData版本升级和数据库迁移

iOS 数据持久化 CoreData的版本迁移

从 sqlite3 迁移到 CoreData?

iOS CoreData 增删改查

iOS 上的 CoreData 轻量级迁移失败

CoreData:从 xcdatamodel 版本 n 到 n+5 的轻量级迁移