您的位置:首页 > 其它

CoreData 的自动平滑升级(Automatic Lightweight Migration)

2013-01-22 10:59 281 查看
就简单说几句这个好了,其实也很简单

在IOS 应用中如果有个entities :table1 有两个字段:id ,name ,并且app 已经发布了

如果现在table1 需要变更成table 2 有三个字段:id,name,sex. 如何在app更新的时候保证之前core data中的数据可用呢?

创建新的Modle Version :Xcode 4.3->Editor->Add Model Version;
在根Version文件上,打开Versioned Core Data Model 中选择对应的版本;
修改你的

NSPersistentStoreCoordinator 初始化方案:

你以前的代码可能是这样:

if (![persist addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrloptions:nil error:&err])
{

NSAssert(0, @"persist init failed!");

}

修改成:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,nil];

if (![persist addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrloptions:options error:&err])
{

NSAssert(0, @"persist init failed!");

}

4,其他代码上对于对应Entities 实例的修改

其他未尽之处,看苹果原文吧!本方案是有一定局限的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: