2015-08-26 3 views
3

У меня возникли трудности с созданием разделов tableView с использованием отношений.Основные данные - sectionNameKeyPath с отношением «один ко многим»

У меня есть два объекта с отношениями Список < ----- >>Item. enter image description here

Я хочу Список быть разделы и Item быть строки. Я установил sectionNameKeyPath с помощью клавиши @"itemList". А вот что остальная часть моей fetchedResultsController выглядит

- (NSFetchedResultsController *)fetchedResultsController { 

    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    // Fetch Request 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"]; 
    [fetchRequest setFetchBatchSize:20]; 

    // Sort Descriptors 
    NSSortDescriptor *itemSort = [[NSSortDescriptor alloc] initWithKey:@"displayOrderItem" ascending:YES]; 
    NSSortDescriptor *sectionSort = [[NSSortDescriptor alloc] initWithKey:@"displayOrderList" ascending:YES]; 
    NSArray *sortDescriptors = @[sectionSort, itemSort]; 
    [fetchRequest setSortDescriptors:sortDescriptors]; 

    // Fetched Results Controller 
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"itemList" cacheName:nil]; 
    aFetchedResultsController.delegate = self; 
    self.fetchedResultsController = aFetchedResultsController; 

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

    return _fetchedResultsController; 
} 

Результатом является то, что fetchedResultsController не заселить Tableview вообще. Когда я пробую его без разделов, с sectionNameKeyPath:nil и только setSortDescriptor:itemSort, он заполняет таблицу View отлично. Также правильно настроены numberOfSectionsInTableView и controller didChangeSection.

Я не уверен, что я делаю неправильно. Может ли кто-нибудь помочь мне в этом?

Благодаря

ответ

3

Изменить название раздела ключевой путь к itemList.listName как FRC ожидает строковое имя для раздела, а не управляемый объект «представляющий» этот раздел.

+0

Вот что я в итоге. Поскольку я хотел использовать 'displayOrderList' для сортировки разделов, я использовал' itemList.displayOrderList' как sectionNameKeyPath и 'itemList.displayOrderList' как sortDescriptor. Я изменяю заголовок раздела на 'listName' в titleForHeaderInSection, и он отлично работает. Спасибо за вашу помощь! – SFF