2012-08-23 43 views
5

我遇到问题我不知道它来自哪里,与CoreData有关。在我的数据库中,a有一组包含元素(使用一对多关系)的类别(带名称和说明)。NSFetchedResultsController有0个部分

我想划分我的表格视图给出Category类别的属性,但是当我尝试使用sectionNameKeyPath:来完成时,生成的NSFetchedResultsController有0个部分。如果我将nil传递给这个参数,它有1个部分。

的代码如下:

- (NSFetchedResultsController*) fetchedResultsController 
{ 
    if(fetchedResultsController) 
     return fetchedResultsController; 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    // Edit the entity name as appropriate. 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Category" 
               inManagedObjectContext:self.managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    // Set the batch size to a suitable number. 
    [fetchRequest setFetchBatchSize:10]; 

    // Edit the sort key as appropriate. 

    NSSortDescriptor *checkDescriptor = [[NSSortDescriptor alloc] initWithKey:@"checked" 
                    ascending:YES]; 
    NSSortDescriptor *indexDescriptor = [[NSSortDescriptor alloc] initWithKey:@"orderIndex" 
                    ascending:YES]; 
    NSArray *sortDescriptors = @[checkDescriptor, indexDescriptor]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

    // Edit the section name key path and cache name if appropriate. 
    // nil for section name key path means "no sections". 
    fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                    managedObjectContext:self.managedObjectContext 
                    sectionNameKeyPath:@"checked" 
                       cacheName:nil]; 

    NSError *error = nil; 
    if (![fetchedResultsController performFetch:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
     return nil; 
    } else { 
     fetchedResultsController.delegate = self; 
     return fetchedResultsController; 
    } 
} 

回答

1

NSFetchedResultsController文档:用于sectionNameKeyPath(你的情况“名”)的关键必须是在第一个排序描述符中使用相同的密钥(“选中”在你的情况)。它们可以不同,但​​是这两个键必须产生相同的相对顺序。

在你的情况,我假设你想在“名称”上添加一个额外的排序描述符并将其用作第一个排序描述符。

+0

它不断产生0个部分... – gskbyte

+0

你有@synthesize你的fetchedResultsController吗?我有类似的问题,这是问题。 – Giovanni

相关问题