Мне нужно найти 20 объектов, которые последний раз просматривал пользователь (с отметкой даты).Каждый объект имеет свойство в базовой модели данных, называемое dateVisited.Когда пользователь просматривает конкретный объект, свойству dateVisited назначается текущая отметка даты.
Итак, у меня есть представление «Недавние», в котором отображаются 20 последних просмотренных объектов.В настоящее время я использую приведенный ниже код для извлечения и сортировки данных.
[fetchRequest setEntity:[NSEntityDescription entityForName:@"object" inManagedObjectContext:self.moc]];
predicate = [NSPredicate predicateWithFormat:
@"objectNumber contains[cd] %@", searchTerm];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateVisited" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.moc
sectionNameKeyPath:nil
cacheName:nil];
[fetchRequest release];
Код возвращает набор из 3000 объектов по порядку, и я отображаю первые 20. Однако он сортирует все 3000 объектов итребуется время, чтобы сделать это.Было бы намного эффективнее, если бы сортировка отслеживала только 20 встреченных «верхних» объектов и отбрасывала каждый из них по пути, если бы этот объект уже не входил в топ-20 встреченных до сих пор.
Так что мой вопросзаключается в следующем: есть ли способ сделать выборку / сортировку, которая отслеживает только запущенные топ-20 объектов?