2011-12-01 2 views
0

CoreData를 사용하여 다른 엔티티 "태그"에 'tags'라는 일대일 관계가 있고, 일부 통신 속성 (문자열, 날짜, ...)이있는 엔티티 '책갈피'가 있습니다. NSTableView는에서 NSArrayController는 일대 다 관계를 어떻게 정렬 할 수 있습니까?

우리는 바인딩을 통해 책갈피 개체를 표시 :

NSArrayController이 파일의 Owner.managedObjectContext 에 바인더 제본되어
  • (표준 엑스 코드 CoreData 템플릿은 managedObjectContext은 AppDelegate에에)
  • 열에서 TableView는 각각의 속성에 바인드됩니다. 특히 Tag 열은 NSValueTransformer의 하위 클래스로이 arrayController.arrangedObjects.tags에 바인드되므로 NSString으로 다 대 관계의 요약을 표시 할 수 있습니다.

작동합니다. 응답하지 않습니다이 일대 다 관계에서 "설정"확실히

-[_NSFaultingMutableSet compare:]: unrecognized selector sent to instance 

: 나는 열을 클릭하면 이제 전체 테이블보기 헤더 올바르게 나는이를 얻는 '태그'열을 제외하고 정리 될 선택기 '비교 :'.

질문 : 어떻게하면됩니까? 어떻게 대다 관계에서 정렬 할 수 있습니까?

ValueTransformer와 같은 것이 있습니까? ArrayController에 대해 비교할 사용자 정의 클래스를 제공 할 수 있다면 ...

+0

iOS 5 및 Mac OS X 10.7에서 우리는 많은 관계를 주문했습니다. NSSet을 사용하는 대신 NSOrderedSet을 사용합니다. 아아, 최신 버전이 필요합니다 (10.6에서 실행 중입니다). 옆에있는 10.7 다른 컴퓨터에서 시도하고 몇 시간 안에 기능을 만들 수 없습니다 ... – malaba

답변

0

가능한 해킹 : _NSFaultingMutableSet이 NSSet이므로 카테고리를 통해 selector : compare :를 추가 할 수 있습니다.

@interface NSSet (someAdditions) 
    - (NSComparisonResult)compare:(NSSet *)anotherSet; 
@end 

@implementation NSSet (someAdditions) 
    - (NSComparisonResult)compare:(NSSet *)aSet { 
     ... 
    } 
@end 

우리는 지금이 비교 구현할 수 있습니다 선택을 우리가 각 세트, 또는 어떤 식 으로든 자신있는 NSString 표현의 수를 비교하는 것처럼, 원하는대로.

내 응용 프로그램에서 작동합니다. 나는 'Create Descriptor'를 NSTableColumn의 바인딩에 다시 사용하고 정렬 할 tableView의 헤더를 클릭 할 수 있습니다.

그것은 모든 NSSet에 영향을주기 때문에 해킹입니다 ...하지만 적어도 내 후크가 있습니다.

당신은 어떻게 생각하십니까?

관련 문제