У меня есть модель данных ядра, как так ...NSFetchedResultsController: сортировать дескрипторы и секции
[Country] <--->> [League] <--->> [Match]
И я использую NSFetchedResultsController
для отображения Matches
в UITableView
.
Я сделал это миллион раз раньше, но почему-то разделы идут не так, и я не могу понять почему.
Я создал сортировки дескрипторы, как так ...
NSSortDescriptor *countrySD = [NSSortDescriptor sortDescriptorWithKey:@"league.country.name" ascending:YES];
NSSortDescriptor *leagueSD = [NSSortDescriptor sortDescriptorWithKey:@"league.name" ascending:YES];
NSSortDescriptor *dateSD = [NSSortDescriptor sortDescriptorWithKey:@"startDate" ascending:YES];
request.sortDescriptors = @[countrySD, leagueSD, dateSD];
Прежде всего я хочу, чтобы проверить, я положил их в правильном порядке. Сначала нужно сортировать по country.name
, а затем сортировать по league.name
, а затем сортировать по startDate
.
т.е.
- Все в
Albania
должен прийти перед чем вSpain
. - В одной стране все, что угодно в
League 1
должно прибыть раньше всего вLeague 2
. - В одной лиге все матчи должны быть отображены в
startDate
с первых же первых.
Тогда Я создаю NSFRC
с этим ...
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.moc sectionNameKeyPath:@"league.leagueID" cacheName:nil];
Так что следует группировать таблица соответствий с различными league.leagueID
значений.
Это должно быть что-то вроде ...
Albania - League 1
12:00
13:00
Albania - League 2
09:00
14:00
France - League 1
09:00
Spain - A League
08:00
12:00
Spain - B League
09:00
Это не работает, хотя. Я получаю несколько заголовков для той же лиги. Некоторые из совпадений отображаются под неправильным заголовком и т. Д.
Я проверил значения (NSLogged) совпадений, входящих в неправильную лигу, и они на самом деле имеют правильную лигу. Так что, хотя они имеют Spain - A League
, они появляются под France - League A
(например).
Любая идея, как я могу это исправить?
Спасибо. Приходится прибегать к выполнению его с запросами на выборку и настройкой моего собственного наблюдателя контекста :( – Fogmeister
@Fogmeister: В качестве альтернативы вы можете добавить дополнительный атрибут, который содержит '. ' и использовать это как ключ раздела и первый сортировать дескриптор –
Ой, это звучит как план. Я бы сказал, что в классе Лиги? – Fogmeister