NSFetchedResultController Sction Name — пользовательская сортировка по датам

#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"