2011-09-22 53 views
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個對象?

回答

5
[fetchRequest setFetchLimit:20]; 

乾杯!

+0

謝謝,這很好! –