使用CoreData的轻量级自动数据迁移
来源:互联网 发布:途牛和携程哪个好 知乎 编辑:程序博客网 时间:2024/05/17 17:38
使用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的轻量级自动数据迁移
- 使用CoreData的轻量级自动数据迁移
- ios开发之使用CoreData的轻量级自动数据迁
- iOS CoreData数据迁移-轻量级迁移
- coredata lightweight migration 轻量级自动迁移
- coredata lightweight migration 轻量级自动迁移
- CoreData的数据迁移
- CoreData的数据迁移
- CoreData轻量级版本迁移
- CoreData 数据迁移
- iOS CoreData数据迁移
- iOS CoreData数据迁移
- coreData的升级(迁移)
- CoreData的版本迁移
- CoreData 数据库更新,数据迁移
- CoreData 数据库更新,数据迁移
- CoreData 数据库更新,数据迁移
- CoreData 数据库更新,数据迁移
- AQGridView开源库中的示例DEMO:SpringBoard中为什么需要empty cell
- Gabor变换
- Windows CE 模拟器和远程调试工具
- ENVI下DOM数据生产专题之图像增强
- xcode 4.5.2 中使用 ios 6 skd iOS/Xcode异常:reason: ‘Could not instantiate class named NSLayoutConstraint’
- 使用CoreData的轻量级自动数据迁移
- 回顾我的2012
- 动态MBean
- Mina学习笔记(4)IoService
- Android-log
- 多线程的使用——中断线程详解(Interrupt)
- How to Report Bugs Effectively
- hdu 2037 今年暑假不AC
- CF 18A(近似直角三角形判断+向量直角公式+switch+istream&(..&P a))