ios/xcode:NSManagedObjectContext上的核心数据抛出错误
我是IOS新手,正在尝试做一个关于核心数据的教程。下面的代码编译后崩溃。断点显示了下面的错误,但我不知道它是什么意思,也不知道如何修复它。这是密码ios/xcode:NSManagedObjectContext上的核心数据抛出错误,ios,core-data,nsmanagedobjectcontext,Ios,Core Data,Nsmanagedobjectcontext,我是IOS新手,正在尝试做一个关于核心数据的教程。下面的代码编译后崩溃。断点显示了下面的错误,但我不知道它是什么意思,也不知道如何修复它。这是密码 - (void)viewDidLoad { [super viewDidLoad]; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity =[NSEntityDescription enti
- (void)viewDidLoad {
[super viewDidLoad];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity =[NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSError *error;
self.failedBankInfos = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
self.title = @"Failed Banks";
}
以下是错误:
managedObjectContext = (NSmanagedObjectContext *) nil
下面是控制台显示的内容
2015-01-14 19:28:50.084 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.088 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.093 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Zip: 12345
2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Name: Test Bank
2015-01-14 19:28:50.094 coredat
a-wend[39693:1857624] Zip: 12345
(lldb)
如果您对如何修复此问题有任何建议,我们将不胜感激。这不是一条错误消息(或者至少不是一条完整的错误消息)。但如果它是正确的,它几乎是不言自明的:
managedObjectContext
为nil,这意味着没有给它赋值。当您试图查找实体描述时,您正在为第二个参数传递一个nil值
从您发布的代码来看,为什么它是nil并不明显,但很可能您一开始从未给它赋值。在某些时候,您需要为该属性分配一个
NSManagedObjectContext
。在何处执行此操作取决于应用程序的结构,但可能的位置是在创建此视图控制器的任何代码中。我还没有完全理解您的意思。该项目源自苹果的通用master detail应用程序。与上面链接的Ray Wenderlich tut在应用程序中放置了以下委托文件:at属性(只读、强、非原子)NSManagedObjectContext managedObjectContext;它在.m文件中与_managedObjectContext合成。以下内容也在主视图控制器中:at属性(非原子,强)NSManagedObjectContext managedObjectContext;它在.m文件中合成,托管ObjectContext没有下划线。这可能是个问题吗?听起来你的应用程序代理和视图控制器都有一个managedObjectContext
。但仅仅声明它们的存在是不够的,你还必须赋予它们价值。很可能,在应用程序委托中的某个位置,您需要将视图控制器的managedObjectContext
设置为与应用程序委托中的值相同。此方法是应用程序内委托…-(NSManagedObjectContext*)managedObjectContext{if(_managedObjectContext!=nil){return_managedObjectContext;}NSPersistentStoreCoordinator*coordinator=[self-persistentStoreCoordinator];如果(!coordinator){return nil;}{U managedObjectContext=[[NSManagedObjectContext alloc]init];[[U managedObjectContext setPersistentStoreCoordinator:coordinator];return{managedObjectContext;}我看不到它被调用。