2013-02-25 103 views
0

我试图设置一个基本的NSFetchedResultsController,它从我们下面的错误抛出一个“空”的错误。由于错误和它的userInfo都是null,我不知道我甚至可以开始做什么来解决发生了什么问题。这是“让你的头撞到砖墙上,不被告知为什么”节目的时刻之一。这里是造成崩溃的部分,这是在viewDidLoad从错误返回的NULL错误NSFetchedResultsController

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; 
} 

我在做什么错?

回答

0

尝试更换

[_fetchedResultsController performFetch:&error] 

,而不是

[self.fetchedResultsController performFetch:&error] 

原因如果_fetchedResultsController不alloced,你会不会派遣-fetchedResultsController方法,只有你用self.fetchedResultsController,getter方法会出动。

+0

似乎就是这样,谢谢。我得到一个对象不能是零阵列现在错误.. – Luke 2013-02-25 12:42:23

+0

我得到它在这一行上︰NSFetchedResultsController theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[self managedObjectContext] sectionNameKeyPath:nil cacheName: @ “”]; ' – Luke 2013-02-25 12:44:09

+0

@lukech当你分配视图控制器时,你保留了managedObjectContext吗? B.t.w,最好是提出一个新问题,而不是继续回答下面的评论。 :) – Kjuly 2013-02-25 12:47:19