CoreData的DataModel的版本控制和迁移(仅介绍轻量迁移)

使用了CoreData的APP每次发布一个新版的时候,都应该创建一个新版数据模型。否则老用户升级后容易Crash。

在Xcode中单击XXXXX.xcdatamodel,点击Editor菜单,并选择Add Model Version,接着会被要求输入新版本的名称。然后点击Finish。

生成的XXXXX 2.xcdatamodel是老版本数据模型,打勾的XXXXX.xcdatamodel是新版将要发布的数据模型,所以版本号越高,代表文件越老,下次再创建一个版本时,这个旧版本将被命名为XXXXX 3.xcdatamodel,随着版本的积累,这些数字的意义逐渐显现出来。

CoreData支持两种不同类型的迁移。轻量迁移和标准迁移。

如果你添加或移除了实体中的属性,或者在数据模型中新增或删除实体,轻量迁移即可,但如果将一个实体切分成两个不同的实体,或者将某个属性从一个实体中移动到另一个实体,轻量迁移无效,需要用标准迁移。

大多数普通修改均可由轻量迁移来完成。

方法是将AppDelegate的persistentStoreCoordinator方法做部分修改

    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

修改为

    NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES};
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {

即可。

标准迁移详见:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

转载请注明原著:http://blog.csdn.net/marvindev

时间: 2024-10-07 07:47:59

CoreData的DataModel的版本控制和迁移(仅介绍轻量迁移)的相关文章

Mysql全量迁移

环境:rehl 6.2 + mysql 5.6.12 场景:在使用mysql的replicatio技术的时候,有时候是因为扩展.有时候是因为部分主备机挂了,我们常常需要复制一个完全一样的数据库,然后再重新建立主备关系. 这里给出针对数据总量大的数据全量迁移的方法: 首要说明:在数据迁移的过程中不能再有数据插入,不然总会有可能产生数据不一样的情况. 这里考虑并针对的是数据量大的情况(亲测情况:五张大表都在3000万数据以上,数据总量大概在40G,迁移时间一个小时左右) 1)配置原数据库,使其生成的

mysql迁移之巨大数据量快速迁移方案

mysql迁移之巨大数据量快速迁移方案-增量备份及恢复 --chenjianwen 一.前言: 当mysql库的大小达到几十个G或者上百G,迁移起来是一件非常费事的事情,业务中断,导出导入耗费大量的时间:所以,需要考虑怎么去节省时间的问题. 二.方案: 1.制定维护时间,中断业务,登录 mysql,刷新日志 2.全备数据,备份后得到 binlog 日志文件 mysql-bin.000001 3.迁移走之前的 binlog 日志文件,只留下 mysql-bin.000001 4.恢复业务 5.将全

文件服务器迁移之三(Robocopy进行大量迁移)

之前分别用FSMT和FSRM做过的文件迁移,具体方法可以参考:http://hubuxcg.blog.51cto.com/2559426/458091; http://hubuxcg.blog.51cto.com/2559426/1407703. 因为FSMT已经停止使用,而FSRM 的迁移速度并不十分理想,而且微软官方也有说明:Windows Server 迁移工具 (WSMT) 的文件迁移 (FSRM) 部分面向小型数据集(小于 100 GB 的数据). 它会通过 HTTPS 逐个复制文件.

版本控制工具VSS使用介绍

什么是版本控制? 1.怎样对研发项目进行整体管理 2.项目开发小组的成员之间如何以一种有效的机制进行协调 3.如何进行对小组成员各自承担的子项目的统一管理 4.如何对研发小组各成员所作的修改进行统一汇总 5.如何保留修改的轨迹,以便撤销错误的改动 6. 对在研发过程中形成的软件的各个版本如何进行标识,管理及差异识辨 版本控制工具介绍 •Starteam 是一个集合了版本控制.构建管理(Build Management)和缺陷跟踪系统为一体的软件,并且具有强大的图形界面,易学易用:但管理复杂.维护

轻量ORM-SqlRepoEx (八)MySQL、Sql Service 迁移

数据库变更在编程应用中是常的,MySQL.Sql Service之间的数据迁移更为常见,在 SqlRepoEx2.0DemoForAspCore中演示了,这种数据库之间切换时SqlRepoEx是如何的简单.中演示了,这种数据库之间切换时SqlRepoEx是如何的简单. 第一步.增加SqlRepoEx.MySql.ServiceCollection的Nuget引用: 第二步.更改Startup.cs文件中 using SqlRepoEx.MsSql.ServiceCollection; 为usin

08r2活动目录迁移升级2012r2--(证书角色迁移)

在服务器管理器中删除旧CA服务器CA角色,之后在目标服务器导入证书服务器备份文件以下操作在目标服务器进行目标服务器上导入之前备份的证书使用之前设置的秘密在win server 2012 r2服务器管理器中添加证书角色,比较简单,不详细描述,以下是关键步骤完成证书配置还原从旧证书服务器备份出来的文件到新证书服务器完成还原后启动证书服务导入备份的注册表修改CAserverName为新证书服务器计算机名修改相应权限完成辅助域控升级为windows server 2012 r2以及证书服务器迁移到win

【Python-Django模型迁移】用户数据库模型的迁移(对其他数据库迁移同样适用)!!!

迁移用户模型类 1. 指定用户模型类 文档 思考:为什么Django默认用户模型类是User? 阅读源代码:'django.conf.global_settings’ AUTH_USER_MODEL = 'auth.User' 结论: Django用户模型类是通过全局配置项AUTH_USER_MODEL决定的 配置规则:在setting.py里进行配置 AUTH_USER_MODEL = '应用名.模型类名' # 指定本项目用户模型类 AUTH_USER_MODEL = 'users.User'

(.公司)域名2015年度报告:仅一家注册量过万

IDC评述网(idcps.com)01月06日报道:根据ntldstats.com数据显示,在2015年国内".公司"域名注册量比拼中,新网.中国万网.中资源一直坚守三甲席位,优势显著.截止2015年12月31日,新网".公司"域名注册量达到12,446个,年净增长5,541个,涨幅最大.接下来,请与IDC评述网一起关注2015年国内".公司"域名注册量前十四强数据情况. (图1)国内域名商(.公司)域名注册量TOP7-2015年度走势图 如图1

subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器

[[email protected]SVN pro]# pwd /var/www/html/svn/pro [[email protected]-APACHE-SVN pro]# svnadmin dump /var/www/html/svn/pro/ >/nc/pro.dump [[email protected] nc]# ll -h pro.dump -rw-r--r-- 1 root root 2.1G Aug 6 23:51 pro.dump #转存文件pro.dump,这个转存文件比