在使用coredata后,如果添加了字段程序需要升级那么如果不设置coredata的数据迁移,升级后的app会直接崩溃
下来来看怎么设置coredata的轻量迁移(我的是xcode4.3.2)
1.选中mom文件选择菜单editor->Add Model Version
添加一个新的版本
2.选择最上层.xcdatamodeld文件,在属性栏找到versioned core data model,设置添加的version为当前用的
3,修改下面的代码
- (NSPersistentStoreCoordin
{
if (persistentStoreCoordinat
returnpersistentStoreCoordinat
}
NSURL *storeUrl = [NSURLfileURLWithPath: [[selfapplicationDocumentsDire
// handle db upgrade 迁移
NSDictionary *options = [NSDictionarydictionaryWi
[NSNumbernumberWithBool:YES], NSMigratePersistentStore
[NSNumbernumberWithBool:YES], NSInferMappingModelAutom
NSError *error = nil;
persistentStoreCoordinat
if (![persistentStoreCoordinat
}
returnpersistentStoreCoordinat
}
4.在新数据模型的文件上添加字段,记得在类文件里也要添加上你添加的新字段,可以删除原来的类文件,重新生成manageobject类。
5。选中.xcmappingmodel文件,点击editor->update default mapping,或refresh
到这里如果你再运行app没问题,那应该就迁移成功了,要是这样就很容易了,关键是很多时候会出一些问题
下面记录一下我碰到的问题,搞了一个下午才找到症结,我的问题的情况和这个地放描述的问题一样
错到
-(NSPersistentStoreCoordin
{
}
这个里面。报的错误是
仔细看这个提示,先看到错误是在 表Profile里面,接下来看key,是toUser到coredata里面的profile表我们找到toUser这个relationship,发现它的optional选项没勾上,打上勾搞定。
一个小问题,但是使app产生的结果就是直接crash。
话说coredata真是个麻烦的东西。