Ios NSFetchedResultsController崩溃返回空错误
我试图设置一个基本的Ios NSFetchedResultsController崩溃返回空错误,ios,objective-c,core-data,nsfetchedresultscontroller,Ios,Objective C,Core Data,Nsfetchedresultscontroller,我试图设置一个基本的NSFetchedResultsController,它从下面的错误中向我抛出一个“null”错误。由于错误和它的userInfo都为null,我甚至不知道我可以做些什么来找出哪里出了问题。这是一个“让你的头撞在砖墙上,却不被告知为什么”的编程时刻。以下是导致崩溃的部分,它位于viewDidLoad中: NSError *error; if (![_fetchedResultsController performFetch: &error]) { NSLog(
NSFetchedResultsController
,它从下面的错误中向我抛出一个“null”错误。由于错误和它的userInfo都为null,我甚至不知道我可以做些什么来找出哪里出了问题。这是一个“让你的头撞在砖墙上,却不被告知为什么”的编程时刻。以下是导致崩溃的部分,它位于viewDidLoad
中:
NSError *error;
if (![_fetchedResultsController performFetch: &error]) {
NSLog(@"Error! %@, %@", error, [error userInfo]);
abort();
}
下面是设置控制器的方法:
- (NSFetchedResultsController *) fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName: @"Quote" inManagedObjectContext: [self managedObjectContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:nil ascending: YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize: 50];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: [self managedObjectContext] sectionNameKeyPath: nil cacheName: @"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
我做错了什么?尝试替换
[_fetchedResultsController performFetch:&error]
而不是
[self.fetchedResultsController performFetch:&error]
因为如果未分配
\u fetchedResultsController
,您将不会调度-fetchedResultsController
方法,只有您使用self.fetchedResultsController
,getter方法将被调度。似乎明白了,谢谢。我现在在数组上获取的对象不能为零错误..我在这一行获取它:`NSFetchedResultsController*OfficedResultsController=[[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:[self-managedObjectContext]sectionNameKeyPath:nil cacheName:@']`@lukech在分配视图控制器时是否保留了managedObjectContext?B.t.w,最好问一个新问题,而不是继续回答下面的评论。:)保留它?我不知道你的意思,我用的是ARC。@lukech例如YourViewController*YourViewController=[[YourViewController alloc]init…];yourViewController.managedObjectContext=self.managedObjectContext
此处YourViewController
是您的fetchedResultsController
所在的类。