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
所在的类。