2011-09-24 81 views
0

我有一个问题,这让我疯狂。我想它应该是相当容易解决,但我不明白它...FetchedResultsController-problem

我想安装一个tableched与fetchedResultsController,但由于某种原因frc返回一个节计数零。这里是我的FRC代码:

- (NSFetchedResultsController *)fetchedResultsController 
{ 
    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Kundendaten" inManagedObjectContext:self.managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Kundenname" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"Kundenname" cacheName:@"Root"]; 
    aFetchedResultsController.delegate = self; 
    self._fetchedResultsController = aFetchedResultsController; 

    [aFetchedResultsController release]; 
    [fetchRequest release]; 
    [sortDescriptor release]; 
    [sortDescriptors release]; 

    return _fetchedResultsController; 
} 

而在这里,我试图让节数:

int count = [[[self fetchedResultsController] sections] count]; 

//此时计数变量为0以下是只是为了证明,我的心不是MOC空......即使我设置sectionNameKeyPath为零,则返回0。

NSEntityDescription *entityDescription = [NSEntityDescription 
               entityForName:@"Kundendaten" inManagedObjectContext:self.managedObjectContext]; 
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
    [request setEntity:entityDescription]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
             initWithKey:@"Kundenname" ascending:YES]; 
    [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
    [sortDescriptor release]; 

    NSError *error = nil; 
    NSArray *array = [self.managedObjectContext executeFetchRequest:request error:&error]; 
    count = [array count]; 

    return count; 

在这种情况下,计数为5 ...

有人看到,问题在哪里?

THX

回答

2

嗯,看起来你已经建立了很好的获取,但你应该真正做到取....

NSError *error = nil; 
if (![aFetchedResultsController performFetch:&error]) { 
    NSLog(@"Bad Fetch %@", error); 
} 
+0

妈呀,太晚了,太约翰尼.. .. thx :) – Tobi

+0

没问题。到过那里;做到了。 – mackworth