2011-06-14 145 views
1

我在核心数据迁移中遇到了一些问题。我有我的应用程序1.0,1.1,1.2的3个版本。核心数据迁移

为前两个版本(1.0和1.1),我有相同的数据模型,但对于第三版(1.2)我已经在我的数据模型中做了一些更改。现在我在我的应用程序的1.2版本中遇到了不兼容的问题(尽管它的重量轻了)。

我在想,我已经错过了我的应用程序1.1版的数据模型版本,因为1.0和1.1的数据模型没有变化,我还没有创建另一个数据模型版本。

我们是否需要为新的应用程序版本创建数据模型版本,即使版本之间的数据模型没有变化。

对不起,如果我查询过达姆......请建议..

回答

1

不,你并不需要为每个应用程序版本的数据模型版本。

可以肯定的是:当您从1.1升级到1.2时,您是否创建了新的数据模型版本?或者你是否简单地修改了现有的数据模型?因为(轻量级)迁移工作,你应该有不同版本的数据模型;你不应该修改现有的模型。

另外,您确实编写了执行自动轻量级迁移的代码,对吧?

+0

是的,我已执行代码的自动轻量级迁移呼叫的。我为1.2版本创建了新的数据模型,而不是之前编辑的数据模型。感谢回复 – dev4u 2011-06-14 17:07:36

+0

+1。发现。这里是文档链接,全部关于核心数据版本控制。拼出来。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmVersioning.html – 2011-06-14 17:08:15

+0

@ dev4u您可以添加代码来执行迁移到您的问题吗?发布您收到的确切错误消息也可能会有所帮助。 – 2011-06-14 17:23:25

1

如果要更改模型,但仍保留打开使用以前版本模型创建的商店的功能,则必须保留模型的以前版本(作为版本模型中的版本)。 Core Data无法打开它没有兼容模型的商店。因此,如果你想改变 模型,但还保留打开现有存储能力,你必须:

  1. 确保您有一个版本的模型,如果你不这样做,使当前的模型转换为版本化模型。
  2. 编辑架构之前,请创建当前模型的新版本。
  3. 编辑模型的新当前版本,保持旧版本不变。

请参考 link 分步程序版本