核心数据警告:“版本哈希信息不适用于所有型号”

Posted

技术标签:

【中文标题】核心数据警告:“版本哈希信息不适用于所有型号”【英文标题】:Core Data warning: "Version hash information not available for all models" 【发布时间】:2011-08-08 07:11:25 【问题描述】:

我的 xdatamodeld 文件收到此警告:“版本哈希信息不适用于所有模型”。我该如何摆脱这个?当我将应用程序安装为新应用程序时,我也开始在启动时崩溃......想知道它们是否相关?这是崩溃:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法使用 nil 模型创建 NSPersistentStoreCoordinator”

【问题讨论】:

【参考方案1】:

这是一个 ios5 测试版问题,由模型文件中的获取请求引起。目前,删除 fetch 请求可以修复它。

【讨论】:

【参考方案2】:

一旦我安装了带有 iOS 5 beta 5 的 Xcode 4.2,我遇到了同样的事情,也许它在那里? 我昨晚在使用 Xcode 4.1 开发生产系统时没有。不幸的是,我现在正在重新安装它,我需要一段时间才能知道是否是这个原因。

【讨论】:

我发现,这绝对是因为测试版,如果您的模型文件中有获取请求,就会发生这种情况。如果可以,删除它,它会正常工作。 谢谢,我通过删除测试版并安装 Xcode 的生产版本解决了问题 - 我没有时间进行试验,我们的时间不多了。但是我在模型中确实有获取请求,所以这就解释了它。太好了,你发现了! 请将此类消息发布为 cmets,而不是答案。【参考方案3】:

第一个错误表明您有多个.xcdatamodel 文件,名称相同但版本不同。多个倍数中的一个缺少内部版本号,即版本哈希。

第二个错误是由第一个错误引起的,因为托管对象模型无法通过合并同名但不同和未知版本的模型文件来创建自己。反过来,如果没有有效的托管对象模型,持久存储协调器就无法初始化。

如果这发生在开发过程中,并且您没有故意拥有多个版本,那么您可能在模拟器上从以前的版本中获得了一个旧编译的 .mom.momd 文件。完全从模拟器中删除应用程序,然后在 Xcode 中清理整个项目并重新构建并重新安装。这通常可以解决问题。

【讨论】:

谢谢,但事实证明根本原因是由于测试版,在我的模型文件中有一个获取请求导致了这个警告和崩溃。删除获取请求修复了它。 @ZS - 您应该使用修复创建一个答案,以便其他人可以找到它。您可以在 24 小时后接受自己的答案。【参考方案4】:

我在 iOS 5 SDK 上遇到了这个问题,不是上述任何问题。我的问题是因为我在一个实体中有很多属性,我无意中有重复(即同一实体中有两个 lastUpdatedDate 属性)。

【讨论】:

以上是关于核心数据警告:“版本哈希信息不适用于所有型号”的主要内容,如果未能解决你的问题,请参考以下文章

设备上的内存警告,而不是仪器

无法加载类警告?

Android:此警告消息指的是啥? - (网络核心)

核心动画警告:“未提交的 CATransaction”

使用核心动画对图像进行排序,接收内存警告

为啥我在 C 中收到警告“分段错误,核心转储”