сортировка с выбранным контроллером результатов приводит к неправильным заголовкам разделов - PullRequest
2 голосов
/ 24 декабря 2010

Я использую fetchedResultsController, чтобы получить данные для табличного представления.

Вот код для извлеченного контроллера:

NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"Appliance" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

[fetchRequest setFetchBatchSize:20];

NSFetchedResultsController *theFetchedResultsController = 
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                                    managedObjectContext:context sectionNameKeyPath:@"productLine.name" 
                                               cacheName:@"Root"];

Путь ключа раздела использует связанный объект. Appliance << -> ProductLine.

Я получаю заголовок разделов в таблице следующим образом:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo name];
}

Это прекрасно работает, но если я изменю сортировку на "возрастание: ДА", тогда разделы таблицы получат неправильные заголовки.

1 Ответ

4 голосов
/ 24 декабря 2010

Я нашел ответ сам. Оказывается, мне нужно отсортировать результаты по productLine.name, а затем отсортировать их по имени. Поэтому я добавил другой дескриптор сортировки.

NSSortDescriptor *aSort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

NSSortDescriptor *pSort = [[NSSortDescriptor alloc] initWithKey:@"productLine.name" ascending:YES];

[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:pSort, aSort, nil]];

Теперь все хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...