0

我有四个版本的 CoreData 模型。我刚刚添加了第四个小改动,一个实体中的一个新的可选属性。在版本 2 和 3 之间,我犯了一个错误,对现有模型进行了更改,而不是创建新版本。我恢复了第 2 版,添加了第 3 版并强制删除了商店,因此正在更新应用程序的用户正在重新生成商店而不执行迁移。

这很好用,但现在我正在尝试使用 CoreData 和 MagicalRecord 执行轻量级迁移,从我商店的版本 3 到 4,但我总是遇到Can't find or automatically infer mapping model for migration错误。我不想再次强制删除,但我不知道我还能做些什么来解决轻量级迁移。我开始怀疑问题仍然存在于版本 2 和 3 之间,但我无法确认。

我用来设置商店的代码非常简单:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Store.sqlite"];
4

1 回答 1

1

此错误消息通常意味着您已删除或未在应用程序包中包含源模型或目标模型,因此核心数据无法为您构建映射模型。查看哪些实体受到影响的方法是将模型哈希打印到控制台并比较以查看哪些实体已更改。从那里您可以确定需要如何构建映射模型。还要记住,迁移不是顺序的。您有 4 个版本的模型,这意味着您现在有 4 x 3 x 2 迁移组合。核心数据只会做一个,从源存储所在的版本到最新版本。因此,您还需要测试从 v1 到 v4、v2 到 v4 等的迁移,以涵盖所有基础。

于 2013-07-09T04:15:02.423 回答