0

NSFetchedResultsController에 악몽을 꾸고 있었고 here에 대한 솔루션을 찾기 위해 fetchedResultsController에서 가져온 데이터, 특히 sectionNameForKeypath 매개 변수에 대해 뭔가 이상한 점이있었습니다. -입니다NSFetchedResultsController - sectionNameForKeypath가 데이터를 얻는 방법은 무엇입니까?

종류는 (의 NSNumber *) 속성이 displayOrder를 촉구했다>카테고리

항목 < < : 나는 두 엔티티 아래에 따라 관계 객체 모델이 있다고 가정

인출 된 항목을 테이블보기의 섹션으로 분리하는 데 사용됩니다.

NSFetchedResultsController *controller = [[NSFetchedResultsController alloc] 
              initWithFetchRequest:fetchRequest 
              managedObjectContext:moc 
              sectionNameKeyPath:@"category.displayOrder" 
              cacheName:nil]; 

displayOrder의 출력을 어떻게 든 조작하고 싶다면 확실한 선택은 getter 메서드를 덮어 쓰고 내가 원하는대로 수행하는 것입니다. 하지만 문제는 fetchRequest 나 fetchedResultsController가 sectionNameForKeypath에 지정되어 있어도 displayOrder에 대한 getter가 액세스되지 않으며 fetchedResultsController가 해당 값을 사용하여 섹션을 구분하고 표시한다는 것을 알 수 있습니다.

다음은 결코 호출되지 않는 덮어 쓰기 된 getter 메소드의 간단한 예입니다. 이것은 내 Category 클래스의 내부에 배치했다 :

-(NSNumber*)displayOrder 
{ 
    NSLog (@"displayOrder getter called"); 
    NSNumber *displayOrder = [NSNumber numberWithInt:0]; 
    return displayOrder; 
} 

나는 또한라고도되지 않습니다 아무 소용 (에 awakeFromFetch을 덮어 시도했습니다,하지만 난 항목 인스턴스를 가져 와서 접근하고 있습니다로 그것은 나를 놀라게하지 않습니다 카테고리 및 그 속성을 통해).

그래서 마지막으로 내 질문은 : category.displayOrder 값이 내 fetchedResultsController에 전달되고이 출력을 제어 할 수있는 방법이 있습니까?

미리 알려 주셔서 감사합니다.

는 로저

답변

1

IOS를 3.2 이후 NSFetchedResultsController 직접 데이터베이스 sectionNameKeyPath 식별 필드를 사용 가능한 경우, 오히려 모든 항목 객체를 생성하는보다. sectionNameKeyPath에 대한 비 영구적 인 속성을 사용해 볼 수 있습니다. (문서에 따라) 객체를 만들도록 강요하지만, UITableView의 섹션 이름을 변경하는 것만으로도 매핑을 수행하는 것이 좋습니다. tableView:titleForHeaderInSection:.

+0

설명해 주셔서 감사합니다. Anomie! 문서의 어느 부분에 대한 링크가 있습니까? 건배! – Rog

+0

[여기 있습니다.] (http://developer.apple.com/library/ios/#DOCUMENTATION/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008227-CH1-SW33) – Anomie

관련 문제