使用IOS的CoreData进行存储很方便,CoreData已经帮我们做了很多基础的工作,一般情况下没必要自己操作数据库了。
在开发中修改了实体模型,可能会遇到schema incompatibility的错误,这是因为修改了数据结构,要进行数据迁移。
其实很多简单的情况,不用这么麻烦,Coredata提供了轻量级的自动数据迁移,比如以下三个情况会自动进行:
1.简单的增加一个字段
2.把一个必填字段改为可选字段
3.把可选字段改为必填字段(但一定要定义默认值)
怎样开启自动迁移的功能?分三步
1.在App delegate类里修改persistentStoreCoordinator方法
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (__persistentStoreCoordinator != nil) {
return __persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"WorkXP.sqlite"];
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
// handle db upgrade
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
// Handle error
}
return __persistentStoreCoordinator;
}
2.增加一个新版本
选择上你的xcdatamodel文件 Design -> Data Model -> Add Model Version (expand your xcdatamodeld item) 选择 “2″ (或者最新的) 文件, Design -> Data Model -> Set Current Version (然后编辑这个版本的文件)
3.在App delegate中指定momd资源
- (NSManagedObjectModel *)managedObjectModel {
if (__managedObjectModel != nil) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"WorkXP" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
分享到:
相关推荐
包含了CoreData得基本用法,版本迁移
本资源为本人文章 “iOS CoreData数据迁移” 操作底板,可以下载下来参照博客进行学习数据迁移
CoreData简单使用dome,CoreData简单使用dome,CoreData简单使用dome
CoreData 数据存储
通过一段具体的代码演示了CoreData如何验证输入数据是否满足要求
iOS研发中数据缓存coreData的使用
将标准 Sqlite 数据库迁移到核心数据的工具 Sqlite2CoreData 是一个命令行工具,用于将 Sqlite 数据库迁移到与 Core Data 兼容的数据库。 它生成可以导入 Mac/iOS 项目并与 Core Data 一起使用的 Datamodel 文件和 ...
CoreData入门级程序 不看后悔
第二是CoreData操作数据不需要使用SQLite代码,使用方便。第三是CoreData把数据用面向对象方式进行管理,操作数据库更方便。 CoreData的核心是Core Data stack(技术栈堆)。CoreData就是依靠Core Data stack中的几个...
iso持久话存储,数据库,CoreData的介绍
如何使用CoreData实现增删改查,存储数据方便
使用CoreData开发iPhone手机应用软件的实例教程.pdf
牧马人CDWrangler 是一个 CoreData 管理器,它将执行模型的轻量级和手动迁移。 CDWrangler 需要 ARC。 在 iOS 8.1 上测试。用法 // Migrationif ([[CDWrangler sharedWrangler ] isMigrationNeeded ]) { // The key ...
IOS 数据高效本地存储 CoreData 的使用方法 比Sqlite3 高效 使用方便 节省大量代码
CoreData数据存储demo
本demo是数据持久化的一种CoreData,对CoreData进行了封装,实现了增删改查
此模块处理将存储在 iOS 的 CoreData 中的键值数据迁移到 localStorage 以供 Cordova 使用。 它目前不处理 CoreData 中存在的任何关系或花哨的功能,只处理字符串键和 JSON 值。 Coredata 将其数据存储在 sqlite ...
iOS中coredata针对数据库sqlite实现增删改查,并且实现对象当成字段存储,两实体件relationship时数据的存储
coreData数据库操作!~有需要的盆友可以看一下
用Swift Breeze编写的Breeze轻量级CoreData管理器从MagicalRecord和Nimble Lightweight中都获得了很多提示,并且易于设置并使用1行代码在数据库iCloud中查找第一个/任何对象。用Breeze用Breeze编写的Breeze轻量级...