2011-01-30 2 views
2

Navigation Hierarchy에는 2 레벨의 UITableViews이 있습니다. 첫 번째 페이지에는 의 모든 인스턴스를 표시하는 UITableView이 있습니다. NSFetchedResultsController은 효과가 있습니다. 두 번째 페이지에서 Equipment의 특정 부분에 대한 모든 Note 엔티티를 가져와 tableView에 표시 할 수 있습니다.NSPredicate를 작성하는 방법 CoreData to-many 관계

NSPredicate을 작성하여 관련 메모 만 기록하려면 어떻게해야합니까?

Table Relationship

- (NSFetchedResultsController *)fetchedResultsController { 

    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    //Init Fetch Request 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

    //Entity the NSFetchedResultsController will be managing 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Note" 
               inManagedObjectContext:self.myContext]; 
    [fetchRequest setEntity:entity]; 

    //Sort Descriptors 
    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"noteTime" 
                    ascending:YES];//Primary Sort 
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"noteText" 
                    ascending:YES];//Secondary Sort 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, 
                   sortDescriptor2, 
                   nil]; 

    //Set Sort Descriptors 
    [fetchRequest setSortDescriptors:sortDescriptors]; 

    // limit Fetch to notes that belong to myEquipment 
    //self 
    // NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"item.name like '%@'", self.item.name]]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:PREDICATE GOES HERE]; 
    [fetchRequest setPredicate:predicate]; 



    [fetchRequest setFetchBatchSize:10]; 

    NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest  
                      managedObjectContext:self.myContext 
                      sectionNameKeyPath:nil 
                        cacheName:@"Equipment"]; 
    //Set the Delegate Property 
    frc.delegate = self; 
    _fetchedResultsController = frc; 

    //Release Local Memory 
    [sortDescriptor1 release]; 
    [sortDescriptor2 release]; 
    [sortDescriptors release]; 
    [fetchRequest release]; 

    return _fetchedResultsController; 
} 

답변

4

core data documentation를 살펴보고 the predicate programming guide 당신은 당신이 논리적으로 거짓이 리드 요청을 가져 오지 않습니다

Equipment *equipment = // your equipment was passed from the previous tableview controller 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"equipment == %@", equipment]; 
+1

같은 것을 할 필요가 있음을 볼 수? 쿼리는 (장비 == <장비 : 0x00000000> (엔티티 : 장비 ...) – ebi