几天前,我更新了Xcode 6 Beta 5,当然还有iOS 8 Beta SDK Beta 5.它在模拟器和运行iOS 8的测试设备上运行了我的一个核心数据应用程序。但后来我尝试了在运行iOS 7.1的物理iPad(第4代)上运行该应用程序并因此错误而崩溃。
dyld`dyld_fatal_error:
0x2be730c4:陷阱
0x2be730c8:nop
所以我尝试在iPad Air 7.1模拟器上运行它并且我没有得到致命错误但是在应用程序崩溃后我得到了以下控制台日志。
'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'
当我运行iPad Retina 7.1模拟器 - 它应该对应于第4代iPad时 - 它编译并运行得很好!此外,任何运行iOS 7.1的iPhone模拟都没有问题!我在测试版5之前从未遇到任何核心数据问题。
我已经清理了项目,重启了我的Mac几次,而我仍然无法让它在我的物理iPad或iOS 7.1上的iPad Air模拟器上运行。
我意识到它可能只是一个非常不方便的错误,但我想知道是否可能只是忽略了一些简单的东西。我有一个从我的核心数据实体中提取的自定义类,这是我用来调用托管对象上下文的代码:
#import "AppDelegate.h"
-(void) startContext {
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
self.context = [appDelegate managedObjectContext];
}
这就是我的表现方式。这是加载托管对象上下文以执行获取请求的错误方法吗?有没有不同的方式我应该这样做,可能不会导致这些错误?
答案 0 :(得分:0)
感谢沃伦伯顿。我觉得有点愚蠢。我以为我已经通过使用"重置内容和设置"删除了模拟器中所有应用程序的实例,但我想我错过了iPad Air Simulator。我也忘了将它从物理iPad中删除。一旦我删除了两个安装并重新构建并运行,一切正常。所以我想我的商店文件在转移到iOS 8 SDK的新测试版时已经损坏了。看起来腐败只发生在iOS 7上安装,而iOS 8安装只是很好。