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

就简单说几句这个好了,其实也很简单

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

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

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

    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 实例的修改


其他未尽之处,看苹果原文吧!本方案是有一定局限的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值