Xcode 6 Beta 在 iPad 7.1 上运行时使用核心数据使应用程序崩溃
Posted
技术标签:
【中文标题】Xcode 6 Beta 在 iPad 7.1 上运行时使用核心数据使应用程序崩溃【英文标题】:Xcode 6 Beta crashes app using core data when run on iPad 7.1 【发布时间】:2014-08-07 13:34:30 【问题描述】:几天前,我更新到 Xcode 6 Beta 5,当然还有 ios 8 Beta SDK Beta 5。它在模拟器和运行 iOS 8 的测试设备上运行我的 Core Data 应用程序之一。但后来我尝试了在运行 iOS 7.1 的物理 iPad(第 4 代)上运行该应用程序并因此错误而崩溃。
dyld`dyld_fatal_error:
0x2be730c4:陷阱 0x2be730c8: 无
所以我尝试在 iPad Air 7.1 模拟器上运行它,但没有收到致命错误,但在应用程序崩溃后我得到了以下控制台日志。
'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'
当我运行 iPad Retina 7.1 Simulator(应该对应于第 4 代 iPad)时,它编译并运行得很好!此外,运行 iOS 7.1 的任何 iPhone(无论是否模拟)都没有问题!在 beta 5 之前,我从未遇到过任何核心数据问题。
我已经清理了项目,重启了我的 Mac 几次,但我仍然无法让它在我的物理 iPad 或 iOS 7.1 上的 iPad Air 模拟器上运行。
我意识到这可能只是一个非常不方便的错误,但我想知道我是否只是忽略了一些简单的事情。我有一个从我的核心数据实体中提取的自定义类,这是我用来调用托管对象上下文的代码:
#import "AppDelegate.h"
-(void) startContext
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
self.context = [appDelegate managedObjectContext];
这就是我被证明这样做的方式。这是加载托管对象上下文以执行获取请求的坏方法吗?有没有不同的方法我应该这样做可能不会导致这些错误?
【问题讨论】:
您也从设备上删除了该应用程序?这通常意味着存储文件已损坏或找不到托管对象模型。 【参考方案1】:感谢沃伦·伯顿。我觉得有点傻。我以为我已经使用“重置内容和设置”从模拟器中删除了该应用程序的所有实例,但我想我错过了 iPad Air Simulator。我也忘了从物理 iPad 上删除它。一旦我删除了两个安装并重新构建并运行,一切正常。所以我猜我的商店文件在迁移到 iOS 8 SDK 的新测试版时损坏了。看起来损坏只发生在 iOS 7 上的安装中,而 iOS 8 安装则正常。
【讨论】:
以上是关于Xcode 6 Beta 在 iPad 7.1 上运行时使用核心数据使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 6.0 Beta 中运行 iOS 7.1 模拟器?
iPad 模拟器上的 SKScene 问题无法在 Xcode 11 beta 7 中填满屏幕
XCode 5.1 Beta 4 无法识别 iOS 7.1 Beta 4 测试设备