迁移复杂的核心数据模型
Posted
技术标签:
【中文标题】迁移复杂的核心数据模型【英文标题】:Migrating complex core data model 【发布时间】:2011-10-04 23:56:08 【问题描述】:我有几个关于核心数据模型迁移的问题。
我有一个非常复杂的数据模型,其中包含几个实体继承案例。我打算在新版本中对数据模型进行一些更改并尝试设置迁移,但是当它迁移商店时,我丢失了一些属于从另一个实体继承的实体的数据。
在我的例子中,我有几个实体都继承自“资源”实体。该资源实体具有属性“名称”。当我尝试迁移数据存储时,从“资源”实体继承的所有实体都会丢失其名称。
他们有什么方法可以让模型迁移适用于具有继承的数据模型吗?我已经发布了一个测试版,我需要对模型进行一些更新,但我显然不希望用户丢失他们的所有数据。
谢谢
【问题讨论】:
【参考方案1】:尝试使用Column properties > Versioning > Renaming identier
在您的新模型上“播放”,输入以前的字段名称,我猜它是相同的。我怀疑这是否适用于继承,但值得一试...... (这个没有记录的功能,允许跨重命名保留数据,救了我好几次)。
如果这不起作用,恐怕您必须进行“手动迁移”......使用模型映射和其他东西......这有点复杂。请参阅有关此主题的 Apple 文档...然后我建议您只回滚您的更改并忘记继承,更快更容易,即使它不那么“干净”。或者只是假设您的用户会丢失一些数据,在 beta 阶段这并不重要...(或者您可以在迁移模型然后重新填充之前收集内存/plist 文件中的旧数据)
祝你好运! CoreData 自动模型迁移很棒,但请注意它仅适用于简单的修改...
哦,又是一个技巧,将-com.apple.CoreData.SQLDebug 1
添加到您的应用启动参数中,您将获得CoreData 生成的所有sql 请求...这可能有助于您了解迁移过程。 (以及其他一些事情......)
【讨论】:
我很好地尝试使用模型映射。无论如何,我需要它们来支持豹。但问题是,即使使用模型映射,它似乎也不能正常工作。但我会尝试有关 SQLDebug 的建议。谢谢以上是关于迁移复杂的核心数据模型的主要内容,如果未能解决你的问题,请参考以下文章