2011-09-22 8 views
0

사용자가 가장 최근에 본 (날짜 표시) 객체 20 개를 찾아야합니다. 각 객체에는 dateVisited라는 핵심 데이터 모델의 속성이 있습니다. 사용자가 특정 객체를 볼 때 dateVisited 속성에는 현재 날짜 스탬프가 지정됩니다.코어 데이터에서 상위 20 개 객체 만 가져 오는 방법

그래서 가장 최근에 본 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]; 

코드는 순서에 3,000 개체의 집합을 반환하고, 나는 그러나 첫 번째 (20)을 표시, 모든 3,000 개체를 정렬 그리고 그렇게 할 시간이 걸립니다. 정렬이 20 개의 '상위'발생 객체를 추적하고 그 객체가 이미 상위 20 개에 없으면 각 객체를 도중에 버렸을 때 훨씬 효율적입니다.

그럼 내 질문은 다음과 같습니다. 가져 오기/정렬 작업을 수행하는 상위 20 개 개체 만 추적 할 수 있습니까?

답변

5
[fetchRequest setFetchLimit:20]; 

건배!

+0

감사합니다. –

관련 문제