CoreData的DataModel的版本控制和迁移(仅介绍轻量迁移)

本文介绍了如何在iOS应用中使用CoreData进行版本管理和数据模型迁移,包括轻量迁移和标准迁移的方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用了CoreData的APP每次发布一个新版的时候,都应该创建一个新版数据模型。否则老用户升级后容易Crash。

在Xcode中单击XXXXX.xcdatamodel,点击Editor菜单,并选择Add Model Version,接着会被要求输入新版本的名称。然后点击Finish。

生成的XXXXX 2.xcdatamodel是老版本数据模型,打勾的XXXXX.xcdatamodel是新版将要发布的数据模型,所以版本号越高,代表文件越老,下次再创建一个版本时,这个旧版本将被命名为XXXXX 3.xcdatamodel,随着版本的积累,这些数字的意义逐渐显现出来。


CoreData支持两种不同类型的迁移。轻量迁移和标准迁移。

如果你添加或移除了实体中的属性,或者在数据模型中新增或删除实体,轻量迁移即可,但如果将一个实体切分成两个不同的实体,或者将某个属性从一个实体中移动到另一个实体,轻量迁移无效,需要用标准迁移。


大多数普通修改均可由轻量迁移来完成。

方法是将AppDelegate的persistentStoreCoordinator方法做部分修改

    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

修改为

    NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES};
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {

即可。


标准迁移详见:


https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html


PS: 无论是标准迁移还是轻量迁移,在APP上线前都需要做大量的测试,来保证版本更新不会因为数据模型的升级原因导致Crash


转载请注明原著:http://blog.youkuaiyun.com/marvindev




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值