2012-08-23 45 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

相關問題