zoukankan      html  css  js  c++  java
  • 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/



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

  • 相关阅读:
    web端ip定位
    【树状数组2】洛谷P3368
    【树状数组1】 洛谷P3374
    【割点】洛谷P3388
    【二分图匹配】洛谷P3386
    洛谷P4145 上帝造题的七分钟2 / 花神游历各国
    【线段树2】洛谷P3373
    【线段树1】洛谷P3372
    【乘法逆元】洛谷P3811
    【LCA】洛谷P3379
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7094849.html
Copyright © 2011-2022 走看看