0
我需要查找用户最近查看(日期标记)的20个对象。每个对象在核心数据模型中都有一个名为dateVisited的属性。当用户查看特定的对象时,dateVisited属性被分配当前的日期标记。如何从核心数据中仅提取前20个对象
所以,我有一个'Recent'视图,显示了最近查看的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个对象?
谢谢,这很好! –