zoukankan      html  css  js  c++  java
  • CoreData数据库版本迁移

    CoreData使用的是第三方库MagicRecord。

    版本不断覆盖时需要对数据库进行迁移,经过不断打包测试,发现以下规律:

    a、表中增加模型,覆盖安装后上一个版本表中数据无法再取出

    b、A模型中新增加字段,覆盖安装后,访问A模型数据,程序闪退,必须删除以前版本重新安装,才能正常访问表中A模型的字段

    c、A模型中删除字段,覆盖安装后,对应用无影响

    所以,只要数据库表中有增加删除模型,模型增加字段等,都需要先做好版本迁移工作。具体步骤如下:

    1、选中当前CoreData的工作表(LearnDriver 2.xcdatamodel是我已经建好了的后的结果)

    2、点击Editor中的Add Model Version,使用默认设置后下一步

    3、所有的对表中模型、字段的修改均在新的表中进行

    4、选中最初的那个表文件

    5、在右边控制面板第一个选项,Model Version中选择最新的表

    6、最后代码调整,MagicRecord只需要用下面代码初始化数据库即可(对应原生CoreData中创建数据库时的option选项字典,详情看框架内部实现)

    7、大工告成!

    在我这个项目中,线上有两个版本,未配置数据库升级工作,导致一旦覆盖安装以前的数据就无法再取出。一直一来对表的操作都是直接在最初的表文件修改,添加模型、模型添加字段等。此时如果在这个已经更改的表文件上再按照上面的操作迁移版本是行不通的。解决方案是从找到线上第一个版本对应的表文件,假设叫A.xcdatamodel,拷贝。当前工作版本的表文件,假设是A++.xcdatamodel。用A替换掉A++,然后按照上面方法进行数据库迁移,然后在新的表上将所有A++相比A所增加的模型、字段添加上去,再重新创建新添加的模型文件即可。

  • 相关阅读:
    信用卡知识:自动扣款日不等于最后还款日_刷卡技巧_财经_腾讯网
    北京,大兴,采育,京福路边上。嘿嘿,交通还是很便利的。
    想知道:北京市 亦庄交通队在哪?
    bda_百度百科
    聚合服务资费标准
    公租自行车-北京经济技术开发区
    北京公共自行车-北京市交通委员会运输管理局
    北京公共自行车租赁方法_百度知道
    NEXT | 不错过任何一个新产品
    吸血鬼日记 第五季 16 | 美剧单词
  • 原文地址:https://www.cnblogs.com/zhangmaliang/p/5424816.html
Copyright © 2011-2022 走看看