核心数据 - 无法在路径中加载优化模型

Gla*_*ves 72 xcode core-data objective-c ios ios9

我在我的iPhone 6中使用iOS 9 beta 5从Xcode 6运行我的应用程序时,在我的控制台中获得了一些这些打印件:

CoreData:无法在路径'/var/mobile/Containers/Bundle/Application/0000000B-BDBC-0000-000B-0000FB00000B/Distribution.app/database.momd/database.omo'中加载优化模型

我找不到与此相关的东西,有没有人对这条消息有所了解?

dig*_*und 12

我遇到了这个问题并做了一些挖掘.

我一直在使用Xcode 6.4进行构建,看起来之前的核心数据只在MyApp.ipa的momd目录中生成了一个.mom文件.此截图来自一个已经看过几个版本的Xcode的项目.

请注意,所有旧版本的版本只有.mom文件.我今天刚创建了一个新的模型版本,它同时包含.mom和.omo文件.

在此输入图像描述

似乎Xcode 6.4(也许还有一些beta 7.x版本)不知道如何加载数据模型的优化版本,因为我也得到了

2015-10-16 11:11:42.563 MyAppName[1767:599635] CoreData: Failed to load optimized model at path '/var/mobile/Containers/Bundle/Application/D887D60B-FB28-4059-8167-F573460D98F8/MyAppName.app/MyDataModel.momd/MyDataModel3_0Analytics.omo'
Run Code Online (Sandbox Code Playgroud)

用6.4编译时发出警告.但是,在使用Xcode(7.0.1)的最新应用程序商店版本编译应用程序时,我没有收到该警告.我猜测Mahesh的解决方案正在起作用的原因是因为重写整个架构会创建应用程序包中正在寻找的.omo文件.

对我来说,解决方案是在核心数据中生成新的数据模型版本,然后使用Xcode 7进行构建.似乎创建新的模型版本会创建优化的模型文件.在我的测试中,即使使用此文件创建Xcode 6.4仍然会抛出错误.直到我用Xcode 7.0.1尝试它才警告消失了.

这是推测,但我认为如果你有一个现有的项目并且没有创建一个新的数据模型版本并使用Xcode 7构建,那么.omo文件丢失了,所以它会抛出警告,因为它无法找到该文件.但是,如果您对数据模型进行了版本化并使用Xcode 6.4构建,那么早期的Xcode版本似乎无法正确使用优化版本,即使它在那里也不会加载它.这些只是我的观察.

我通过执行以下操作验证了我要加载的优化模型(.omo文件):1.归档项目2.将.ipa扩展名更改为.zip 3.展开您的zip文件4.单击"payload"文件夹然后右键单击(或cmd单击)文件夹中的应用程序包,并选择"显示包内容".5.单击.momd目录,您应该看到所有可用的托管对象模型.

如果您拥有.mom文件而没有.omo文件,则警告完全正确,应用程序无法打开不存在的文件.

在我的测试中,警告似乎只是信息性的.我从来没有因为它而崩溃.似乎核心数据可能首先尝试加载优化模型,如果失败则回退到常规.momd模型.这只是我的猜测.

我不确定这里的所有内容是否完全正确,这正是我在尝试调试时所观察到的.如果其他人可以提供更多信息,我欢迎您的意见.