【发布时间】:2011-04-27 18:49:19
【问题描述】:
我尝试使用 NSMigrationManager 手动迁移来迁移我的核心数据存储。我使用默认向导在 Xcode(版本 4)中创建了一个映射模型,然后在代码中使用
[NSMappingModel mappingModelFromBundles:nil forSourceModel:sourceModel destinationModel:targetModel];
这似乎工作正常。唯一的问题是,在我尝试稍微调整映射模型之后(使用描述的方法here 将一个实体分成两个),以前的方法不再起作用,它只返回 nil(这意味着映射模型不再与源模型和目标模型兼容?!)。此外,有趣的是,Xcode 向我显示了映射模型的源模型和目标模型的下拉列表,这些模型没有更改并且设置为正确的模型。
兼容性检查是如何工作的,映射模型是否确实存在一些变化,使其与源/目标模型的原始组合不兼容。
更新:从模拟器中卸载应用程序并恢复 sqlite 数据库后,它再次运行,在我看来好像某些模型没有正确更新.. 很奇怪,我现在想知道这是否可以在真正的更新期间发生,或者这只是 Xcode / Simulator 问题..
【问题讨论】:
-
澄清:您是否迁移了一次模型,然后再次尝试迁移它?您是否两次使用相同的映射模型?
-
@TechZen:是同一个型号,后来我恢复了sqlite文件。映射模型在物理上是相同的,但是对其进行了一些更改(调整了属性映射等)
标签: iphone objective-c cocoa cocoa-touch core-data