2009-05-16 4 views
0

코어 데이터가 포함 된 saving recent searches의 이전 게시물에 대한 후속 질문입니다.가장 최근의 검색 결과가 코어 데이터에 포함되었습니다.

검색 결과를 그룹화하기 위해 Entry 엔티티와 History 엔티티가 있습니다. Entry.history는 History와의 관계입니다. History.entries는 Entry (Entry.history의 역함수)와 다 대다 관계입니다. 기록에는 날짜 속성이 생성되어 있습니다. NSFetchedResultsController에서 가장 최근 History 엔티티에 속한 모든 항목 엔티티를 가져 오는 방법을 파악하려고합니다.

나는 그렇게

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"history == %@", history]; 
    request = [[NSFetchRequest alloc] init]; 
    entity = [NSEntityDescription entityForName:@"Entry" inManagedObjectContext:context]; 
    [request setEntity:entity]; 
    [request setPredicate:predicate]; 
    fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:@"Root"];

처럼 NSFetchedResultsController 너무

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"History" inManagedObjectContext:context]; 
    [request setEntity:entity]; 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"createdAt" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [request setFetchLimit:1]; 
    NSArray *results = [context executeFetchRequest:request error:&error]; 
    History *history = (History *)[results objectAtIndex:0]; 

그리고 엔트리 기관처럼 가장 최근의 역사의 실체를 얻을 수 있습니다하지만 단일 요청으로이 작업을 수행 할 수 있습니다. 필자는 엔트리 결과를 저장하는 fetchedResultsController에 대해서만주의해야한다.

답변

1

당신은 관계를 다음과 정렬 기술자가 할 수 있어야한다 :

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entry" 
              inManagedObjectContext:context]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
            initWithKey:@"history.createdAt" 
             ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor 
                 count:1]; 
[request setEntity:entity]; 
[request setSortDescriptors:sortDescriptors]; 
[request setFetchLimit:1]; 
fetchedResultsController = [[NSFetchedResultsController alloc] 
          initWithFetchRequest:request 
          managedObjectContext:context 
           sectionNameKeyPath:nil 
             cacheName:@"Root"]; 
관련 문제