我试图通过使用NSMigrationManager进行手动迁移来执行Core Data存储的迁移。我创建在Xcode使用默认的向导映射模型(第4版),然后在代码中发现它使用核心数据存储迁移时出现的问题
[NSMappingModel mappingModelFromBundles:nil forSourceModel:sourceModel destinationModel:targetModel];
这似乎很好地工作。唯一的问题是,在我尝试稍微调整映射模型后(使用描述here的方法将一个实体拆分为两个)之后,以前的方法不再有效,它只返回nil(这意味着映射模型不再与源和目标模型兼容?!)。另外,有趣的是,Xcode显示了我的下拉菜单,其源模型和目标模型都没有改变,并且设置为正确的模型。
兼容性检查如何工作,并且映射模型是否真的发生了一些变化,可能导致映射模型与源/目标模型的原始组合不兼容。
更新:从模拟器卸载应用程序和恢复sqlite数据库后,它再次工作,这在我看来,就好像一些模型没有正确更新..奇怪的是,我现在想知道是否这可能发生在真正的更新或它只是一个Xcode /模拟器问题。
说明:您是否曾经迁移模型,然后尝试再次迁移模型?你两次使用同一个映射模型吗? – TechZen 2011-04-28 13:59:41
@TechZen:这是相同的模型,我已经恢复了sqlite文件。映射模型在物理上是相同的,但是它已经做了一些修改(调整了属性映射等) – 2011-04-28 15:07:04