核心数据迁移仅在发布版本上失败

时间:2011-06-27 13:49:31

标签: ios core-data xcode4 migration

我在Core Data模型(iOS)中添加了一个属性。我在版本2上,所以我添加了一个新模型,并在版本3下保存了新属性。

我的加载代码是标准的(使用initWithContentsOfURL:初始化MOM指向我的包中的.momd目录),然后将该MOM传递给NSPersistentStoreCoordinator

然后,我从App Store下载我的应用程序,运行它,然后尝试测试迁移。轻量级迁移在我的模拟器和我的手机在Debug 中工作正常(与Xcode 4相连)。

但是,当我使用iTunes同步发布版本(使用Xcode上的“存档”功能)时,我的应用程序的数据存储无法迁移,并出现此错误:

Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed.
(Cocoa error 134130.)", reason=Can't find model for source store}

更糟糕的是,商店在一些无法逃脱的巫毒状态下迷失了 - 如果我重新连接设备并再次从Xcode安装Debug版本,我无法“恢复”迁移。

上面的错误消息省略了有关我的实体的详细信息。我可以提供,如果有帮助,但任何想法在这里可能是错的?我已经阅读了有关此错误代码的所有问题,到目前为止,所有问题都未能产生结果。

我尝试了手动迁移,但也产生了错误。但是,由于我只向1个实体添加了1个属性,因此轻量级迁移无法正常工作。

1 个答案:

答案 0 :(得分:2)

每次我看到这个问题时,在我的代码或其他人中,XCode在应用程序中部署的模型版本都会遇到某种不良状态。打开应用的发布IPA存档,查看其中包含mom个文件。如果您看到以前的版本之一丢失,那可能是同样的问题。至于解决方案,我的结果好坏参半;以下步骤的某些变体对我有用,但从不以一致的顺序。

  • 清洁&删除项目的派生数据(确保已保存已发布应用的存档,以便在必要时进行符号化)
  • 重命名以前的模型版本文件(在xcode中),添加或删除名称和表示版本号的数字之间的空格(如果有空格,则替换为'_',如果没有空格尝试添加一个)
  • 添加新版本的模型,而不更改任何内容,并将其设为“当前”版本

我知道这些步骤看起来像抓着稻草,这正是我觉得这种情况的感觉。您可能会考虑使用Apple的一个支持事件,很高兴知道他们对此问题的正式回答是什么。