【问题标题】:Problem by migration of Core Data store核心数据存储迁移问题
【发布时间】: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


【解决方案1】:

每次您使用映射模型进行迁移时,它都会更改持久存储。您每次都必须从相同版本的商店开始,并以完全相同的顺序执行迁移以获得相同的结果。

我通常建议定期删除和重新创建开发中使用的商店。通常,即使数据集相当大,我也会在每次测试运行开始时这样做。如果您不这样做,那么您将冒着通过在开发代码中所做的更改而在商店中建立“kruft”的风险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2019-02-18
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    相关资源
    最近更新 更多