版权声明:本文为博主原创文章,未经博主允许不得转载。

如果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升级安装的更多相关文章

  1. 将mssql数据库高版本迁移到低版本

    将mssql数据库高版本迁移到低版本 在低版本目标数据库中创建目标空数据库[TargetDb] ,注意新建数据库即可,不要创建任何表 在低版本数据库中,选中[服务器对象=>链接服务器] 右键[新 ...

  2. iOS APP下载安装时,如果出现此时无法下载安装APP的字样时,一些解决思路

    1.在iosAPP下载安装时,如果出现此时无法下载安装APP的字样时,可能是苹果系统进行了支持更新,并需要我们确认条约.至于如何判断是否是苹果系统进行了更改,只需要我们进入开发者账号,进入我的账户(A ...

  3. MSSQL数据库高版本迁移到低版本

    起因是因为客户要把系统从阿里云迁移到本地服务器,阿里云上的数据库版本是MSSQL2016,客户提供的服务器是Server2008R2的,问题就来了,Server2008不支持2016版本,最后只能装的 ...

  4. 强大的Flutter App升级功能

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 应用程序升级功能是App的基础功能之一,如果没有此功能会造 ...

  5. iOS coredata 数据库升级 时报Can't find model for source store

    在coredata 数据库结构被更改后,没根据要求立即建立新version,而是在原version上进行了小修改,之后才想起来建立新版本.并通过以下代码合并数据库, NSError *error = ...

  6. CoreData数据库升级

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

  7. ios开发 数据库版本迁移手动更新迭代和自动更新迭代

    数据库版本迁移顾名思义就是在原有的数据库中更新数据库,数据库中的数据保持不变对表的增.删.该.查. 数据持久化存储: plist文件(属性列表) preference(偏好设置) NSKeyedArc ...

  8. sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

    最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的 ...

  9. ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(二)

    由于大家都热衷于对ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(一)的浏览下面我分享下我的源文件git仓库: 用法(这边我是对缓存的一些操作不需要可以省去):https://github.c ...

随机推荐

  1. HDU 1113 Word Amalgamation (map 容器 + string容器)

    http://acm.hdu.edu.cn/showproblem.php?pid=1113 Problem Description In millions of newspapers across ...

  2. Swift - 使用CollectionView实现图片Gallery画廊效果(左右滑动浏览图片)

    1,效果图 (1)图片从左至右横向排列(只有一行),通过手指拖动可以前后浏览图片. (2)视图滚动时,每张图片根据其与屏幕中心距离的不同,显示尺寸也会相应地变化.越靠近屏幕中心尺寸就越大,远离屏幕中心 ...

  3. C#+HtmlAgilityPack+Dappe

    C#+HtmlAgilityPack+Dappe (转发请注明来源:http://www.cnblogs.com/EminemJK/) 最近因为公司业务需要,又有机会撸winform了,这次的需求是因 ...

  4. 【POJ 2482】 Stars in Your Windows

    [题目链接] http://poj.org/problem?id=2482 [算法] 线段树 + 扫描线 [代码] #include <algorithm> #include <bi ...

  5. 7.gcc的使用

    什么是gcc gcc编译器(GNU C Compiler) 现在我们所说的 gcc 是 GUN Compiler Collection的缩写,可以支持多种语言编译,比如 C,C++,Java, pas ...

  6. linux 命令cp拷贝

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  7. 常用相关linux命令

    查看进程netstat -tnlp | egrep "(9097)" lsof -i:9097 ps -ef | grep kafka 观察句柄变化lsof -p $pid | w ...

  8. function——函数声明头的提升和预解析

    函数: 即function语句的集合,就是将多个语句封装到一起: 函数的执行要会自己遍历,遇见函数 a():执行语句,就要移交控制权,函数执行完毕之后,控制权又移交回来了! 函数的参数要罗列在func ...

  9. [原创]c语言中const与指针的用法

    最近一直在准备笔试,补补大一大二欠下的课.复习c语言时碰见这么个题:   1 2 3 4 5 int a=248, b=4; int const c=21; const int *d=&a;  ...

  10. Obj文件和Bin文件

    本文导读:在用visual studio 编程时,会看到项目文件中含有bin和obj这两个文件夹,那么这两个文件夹具体包含一些什么东西的,具体作用是什么? 一.Bin文件夹 1.用来保存项目生成后程序 ...