У меня проблемы с NSFetchResultsController и вы ищете небольшую помощь.NSFetchResultsController с разделамиNameKeyPath и порядок результатов
Мой CoreData объект FunCentre
имеет следующие атрибуты name
, latitude
, longitude
, country
, postcode
и favourite
. Когда пользователь выбирает строку в представлении таблицы, он устанавливает атрибут favourite
равным 1, а при повторном нажатии возвращается к 0. Это все работает отлично, так как я проверил файл sqlite и изменения происходят правильно.
Я хочу использовать разделы для разделения рядов, а не тех, которые не являются. Я хочу, чтобы избранные были перечислены в верхней части таблицы в первом разделе, а остальная часть списка - во втором разделе.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"favourite"
cacheName:nil];
Приведенный выше код работает в то время как в приложении, и изменения фаворитов, однако, когда я закрыть приложение и перезапустить его фаворитами не сгруппированы и просто появляются в алфавитном порядке в основном списке, это еще поставить правильный количество строк в избранном разделе.
SQL Debug Результаты
CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA
CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZCOUNTRY, t0.ZFAVOURITE, t0.ZLATITUDE, t0.ZLONGITUDE, t0.ZNAME, t0.ZPOSTCODE FROM ZFUNCENTRE t0 ORDER BY t0.ZNAME
CoreData: annotation: sql connection fetch time: 0.0051s
CoreData: annotation: total fetch execution time: 0.0106s for 34 rows.
CoreData: sql: SELECT t0.ZFAVOURITE, COUNT (DISTINCT t0.Z_PK) FROM ZFUNCENTRE t0 GROUP BY t0.ZFAVOURITE ORDER BY t0.ZFAVOURITE
Может кто-нибудь сказать мне, почему группировка не работает на перезапуске? а также как изменить порядок группировки? поскольку фавориты появляются внизу, и я хочу, чтобы они были наверху.
Большое спасибо заранее
Спасибо Мартин, что решить эту проблему при запуске с заказом. Как изменить порядок раздела? Я хочу, чтобы избранные были наверху, а остальная часть списка под ним, в настоящее время наоборот. –
@MattPrice: Изменить 'восходящий: YES' на' возрастающий: NO' :-) –
Perfect .. Большое спасибо за быстрый ответ и отличный ответ. –