CoreData的数据迁移

CoreData的数据迁移

很多人说CoreData坑多,现在才感觉到,今天上午写代码的时候,发现了一个大问题.

过程如下,之前我自己给coredata的实体添加了几个字段,后来网上的一个用户说我们的app进去后闪退,但是我自己从新冲appstore下载了一个发现并没有哪些问题.于是这个事就过去了.第二天我run我自己的新程序的时候,发现coredata一保存在save方法的时候,就直接闪退.连错误都不报.导致我很崩溃... 网上一查,原来是要数据迁移.下面是我的一些记录,希望能帮助到别人.

其实很多简单的情况,不用这么麻烦,Coredata提供了轻量级的自动数据迁移,比如以下三个情况会自动进行:

1.简单的增加一个字段

2.把一个必填字段改为可选字段

3.把可选字段改为必填字段(但一定要定义默认值)

1.升级数据库模型:选中你的mydata.xcdatamodeld文件,选择菜单editor->Add Model Version 比如取名:mydata2.xcdatamodel

2.设置当前版本:选择上级mydata.xcdatamodeld ,在inspector中的Versioned Core Data Model选择Current模版为mydata2(inspector界面,即为XCode工作区右侧工具栏)

3.修改新数据模型mydata2,在新的文件上添加,修改或删除字段及表

4.在程序启动时添加如下代码:

NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption, nil];

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl
options:optionsDictionary
error:&error]) {
NSLog(@”failed to add persistent store with type to persistent store coordinator”);
}

5.重启一下XCode

参考文章:  升级app时coreData的处理及注意事项      使用CoreData的轻量级自动数据迁移    Working with Core Data: Schema Versioning and Lightweight Migrations    小结CoreData的Migration    coredata 数据迁移    CoreData数据迁移

时间: 2024-10-11 04:27:11

CoreData的数据迁移的相关文章

CoreData的增删改查和数据迁移示例

作为管理器,最基本的功能就是增删改查了. 1.插入 AppDelegate *app = [[UIApplication sharedApplication] delegate]; NSManagedObjectContext *context = [app managedObjectContext]; NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"entity

CoreData 本地数据存储

在iOS开发中,我们会用到本地数据文件的存储,一般有属性列表Plist,SQLite,CoreDate以及沙盒文件等方式,现在归纳一下CoreData. CoreData是苹果iOS 5后提供的本地文件存储框架,利用CoreData可以方便创建关系映射,进行数据CRUD(增删改查)操作. <注意>使用CoreData处理数据务必先引入CoreData框架包:CoreData.framework: 1.创建CoreData文件的两种方式 (a).在使用CoreData时我们需要进行CoreDat

iOS 通过CoreData实现数据持久化

iOS 通过CoreData实现数据持久化引言: Core Data 是 iOS 3.0 以后引入的数据持久化解决方案,其原理是对 SQLite 的封装,是开发者不需要接触 SQL 语句,就可以对数据库进行的操作. 其编码方式和原理结构方面较为特殊,本博文主要介绍在使用 Core Data 时遇到的各种问题以及对其核心原理进行解释. 参考资料: 1: iOS 教程:Core Data 数据持久性存储基础教程 http://www.dasheyin.com/ios_jiao_cheng_core_

iOS Core Data 数据迁移 指南

前言 Core Data是iOS上一个效率比较高的数据库框架,(但是Core Data并不是一种数据库,它底层还是利用Sqlite3来存储数据的),它可以把数据当成对象来操作,而且开发者并不需要在乎数据在磁盘上面的存储方式.它会把位于NSManagedObject Context里面的托管对象NSManagedObject类的实例或者某个NSManagedObject子类的实例,通过NSManagedObjectModel托管对象模型,把托管对象保存到持久化存储协调器NSPersistentSt

Code First Migrations更新数据库结构(数据迁移) 【转】

背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成. 要求 已安装NuGet 过程示例 [csharp] view plaincopyprint? //原model //原model [csharp] view plaincopyprint? us

数据迁移,iis的各种坑

最近在搞iis发布  本来在家里实验过很多次 都是可以的 觉得很容易!但是到客户现场去试的时候发现各种坑 在这里给大家说说  望大家注意点哈! 首先:数据迁移先是备份数据库,然后再还原  这个地方一定要注意数据库版本问题,比如你如果在sqlserver2012上备份的,到sqlserver2008版本上还原就不行,因为这是高版本还原到低版本了 就不兼容,但是低版本还原到高版本就可以! 第二步:还原好了数据库,vs代码要配置服务器了,也要注意个问题:因为vs配置的是sqlserver的sql认证账

EF数据迁移,未将对象引用设置到对象实例

现象: 执行Enable-Migrations -force时就报"未将对象引用设置到对象实例"的异常: DbProviderServicesExtensions.GetProviderManifestTokenChecked 原因: 1.项目启动项的App.config或web.config里面没有配置 entityFramework节点或connectionStrings节点,EF在数据迁移时找不到数据库连接串信息 2.项目启动项配置错误,应该选择有entityFramework节

SQL SERVER几种数据迁移/导出导入的实践

SQLServer提供了多种数据导出导入的工具和方法,在此,分享我实践的经验(只涉及数据库与Excel.数据库与文本文件.数据库与数据库之间的导出导入). (一)数据库与Excel 方法1: 使用数据库客户端(SSMS)的界面工具.右键选择要导出数据的数据库,选择“任务”——“导出数据”,下图1,按照向导一步一步操作即可.而导入则相反,导入时,SQLServer会默认创建一张新表,字段名也默认跟导入的Excel标题一样,并且会默认字段数据类型等.当然在可以在向导进行修改.需要注意的是如果标题不是

mysql5.1.33到mysql5.5.33数据迁移的过程中要注意的问题

背景:公司要把测试库mysql5.1.33上面的数据迁移到mysql5.5.33上面,5.1上面的表大都是myisam表,为了尽量让数据一致,用了--lock-all-table选项 注意事项: 1,可以先导权限表,这样就可以把业务迁移到已经导成功的那一部份库上面 2,导之前要先把binlog禁掉,这样导入的速度会快一些,set global sql_log_bin=OFF,没有禁用binlog的情况下每小时大约只能导1G多的数据.禁用binlog后每个小时大概可以导入20G的数据 3,选择in