核心数据“无法find源存储模型”;

inheritance人的问题…我有一个应用程序商店,它使用核心数据…我一直在更新我的模型正确(使用版本等),但最近我不小心失去了我的最新模型(对应app store),所以现在我得到这个错误:原因=“无法find源存储模型”;

我已经创build了我的模型,并且据我所知,我已经完成了与之前的版本完全相同的更改…但是仍然无法使其像我的模型版本那样。 所以我的问题是,我可以以某种方式欺骗核心数据,认为它有正确的版本? 或者有什么办法可以检查哪个实体有问题? 我知道核心数据存储模型的散列,以检查版本是否相同,但是我不知道版本模型必须是相同的程度,以便“散列检查”成功。 。

任何帮助将是伟大的! 谢谢!

您可以从应用程序的app store副本中恢复数据模型,然后将其导入到项目中。 核心数据模型不会像源代码那样进行编译,所以颠倒过程通常是有效的。 以下内容假定您已经在Mac上的iTunes中下载了该应用的当前app store版本:

首先将app store捆绑到一个安全的地方:

cp ~/Music/iTunes/Mobile\ Applications/YOUR-APP-NAME.ipa /tmp cd /tmp/ 

接下来打开那个包,这真的只是一个zip文件。

 unzip YOUR-APP-NAME.ipa 

这将创build一个名为Payload的目录,其中包含应用程序及其包。 该软件包包含核心数据模型。 将其复制出来:

 cp -rp Payload/YOUR-APP-NAME.app/YOUR-MODEL-NAME.momd /tmp/ 

(调整名称以匹配您的数据模型)。

如果您的app store中已经有多个版本,则该模型是一个包含多个mom文件的mom 。 每个mom文件对应于一个模型版本。 其中之一是你需要的。 你需要弄清楚哪个是哪个。

现在,切换到Xcode。 创build数据模型的新版本,但不要使其成为最新版本。 删除此版本中的所有内容,所有实体,所有内容。 显示空的模型后,进入Editor菜单并selectImport... 在文件打开对话框中,导航到上面/tmp/数据模型的副本。 select你需要恢复的版本,然后点击“打开”。

该模型版本中的所有实体现在都存在于刚刚创build的新模型文件中。 现在,您可以在模型迁移时将此模型用作“原始”模型。

或者,不要导入到Xcode中,您可以使用我的momdec项目对模型进行反编译。 这将产生一个未编译的核心数据模型,你可以添加到你的Xcode项目。

为了将来的参考和不推荐。

如果模型是不可恢复的,你可以“伪造”。

  1. 创build一个与你丢失的相同的新模型
  2. testing一下,看看你是否幸运(不太可能)。
  3. 记下核心数据在日志中吐出的实体哈希值
  4. (版本哈希修饰符)中将这些哈希值input到模型中,
  5. 再次运行您的迁移。
  6. 永远不要再修改生产模型。 运输时立即将其检入源代码pipe理。

对于在这个问题上出现的人谁不试图将核心数据模型迁移到另一个,这个错误也可以显示出来,如果你试图将数据保存到你的实体中没有设置一些值的核心数据。 确保所有的数据variables正确设置和设置,以避免这个错误,梦想MacBook Pros骑独angular兽可能永远活在你的现实!