#ios #iphone #core-data #nssortdescriptor #nsfetchedresultscontroller
#iOS #iPhone #core-данные #nssortdescriptor #nsfetchedresultscontroller
Вопрос:
Я использую NSFetchedResultController. Ниже приведен сценарий, которого я хочу достичь.
-
У меня есть таблица сообщений с атрибутами MessageDate (т.е. NSDate). Мне нужно отсортировать сообщения по меткам дат, таким как сегодня, вчера, на прошлой неделе и старше.
-
Я пытался использовать NSSortDescriptor с методом селектора, но формат метода селектора возвращает только объект NSComparisonResult.
Комментарии:
1. Вы читали о том, как работают разделы? У вас есть имена сортировки и разделов отдельно в вашей реализации? Показать код.
2. Да, я это сделал. Мне нужно отсортировать даты, сравнивая их с текущей датой. Например. если дата сообщения является сегодняшней датой, она должна быть сгруппирована вместе. Если это вчерашнее, оно должно быть сгруппировано во вчерашней группе и так далее.
Ответ №1:
Вместо сортировки результатов попробуйте добавить свои дескрипторы сортировки в сам запрос на выборку. И создайте свой экземпляр NSFetchedResultController с помощью этого запроса на выборку.
Например, вы могли бы использовать этот фрагмент кода.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"messageDate" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *myFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"message" cacheName:nil];
Комментарии:
1. Вероятно, вы хотите добавить некоторые подробности о
sectionNameKeyPath:@"message"