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

如果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. poj--2631--Roads in the North(树的直径 裸模板)

    Roads in the North Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2389   Accepted: 117 ...

  2. 基于Apache CXF的Web Service服务端/客户端

    转自:https://www.aliyun.com/zixun/wenji/1263190.html CXF服务端: package com.sean.server; import javax.jws ...

  3. Navicat 连接 Mysql 报2059错误的原因以及解决方法

    MySQL的8.0.*版本使用的是caching_sha2_password验证方式,而Navicat Premium 12还不支持该种方式.解决方案: 1,降低mysql的版本 2,设置mysql支 ...

  4. Redis学习笔记(九) 命令进阶:Pub/Sub(发布/订阅)操作

    原文链接:http://doc.redisfans.com/pub_sub/index.html Redis的Pub/Sub模型可以应对工作中的一些简单应用,涉及到复杂应用还是推荐使用诸如Rabbit ...

  5. Spark基本运行流程

    不多说,直接上干货! Spark基本运行流程 Application program的组成 Job : 包含多个Task 组成的并行计算,跟Spark action对应. Stage : Job 的调 ...

  6. Java基础——GridBagLayout布局

    1.GridBagLayout布局管理器非常灵活,每个 GridBagLayout 对象维持一个动态的矩形单元网格: 2.需要和它的约束类(GridBagConstraints类)一起使用: 3.Gr ...

  7. SQL常用函数集锦

    ..STUFF()用另一子串替换字符串指定位置.长度的子串.STUFF (<character_expression1>, <start_ position>, <len ...

  8. autocomplete for password

    <input id="userPassword" type="password" autocomplete="current-password& ...

  9. (转载)解决切换Fragment时布局重新实例化

    解决切换Fragment时布局重新实例化 作者 instanceof 关注 2015.12.30 17:25* 字数 628 阅读 7616评论 17喜欢 23 关于Fragment 在这简单说一下F ...

  10. 一.Windows I/O模型之选择(select)模型

    1.选择(select)模型:选择模型:通过一个fd_set集合管理套接字,在满足套接字需求后,通知套接字.让套接字进行工作.避免套接字进入阻塞模式,进行无谓的等待.选择模型的核心的FD_SET集合和 ...