2012-08-28 3 views
7

@UnionOfObjects가 제공하는 단순한 valueForKey : 또는 valueForKeyPath :가 수행 할 수없는 것을 알아낼 수 없습니다. 키 - 값 코딩 @UnionOfObjects

Apple docs:

@unionOfObjects

오퍼레이터는 오퍼레이터 오른쪽 키 경로에 의해 지정된 속성에 고유 객체를 포함하는 배열을 반환한다. "@distinctUnionOfObjects"와 달리 중복 객체는 이 제거되지 않습니다. 다음의 예는 거래 거래에 대한 수취인의 속성 값을 반환

NSArray *payees = [transactions valueForKeyPath:@"@unionOfObjects.payee"]; 

결과 수취인 배열이 다음 문자열이 포함되어 녹색 파워, 그린 파워, 녹색 전원, 자동차 대출, 자동차 대출, 자동차 대출, 일반 케이블, 일반 케이블, 일반 케이블, 모기지, 모기지, 모기지, 동물 병원. 위의 예에서

,

NSArray *payees = [transactions valueForKey:@"payee"]; 

값의 동일한 배열을 반환하지만, 적은 코드 것이다. 내가 뭘 놓치고 있니?

+1

KVO의 이러한 기능은 OSX에서 바인딩을 사용할 때 많은 가치를 제공합니다. –

답변

3

내가 생각할 수있는 것은 즉시 "배열 ..."(강조 광산)을 반환한다는 것입니다. 그래서 편리 수 있습니다 :

NSSet *someSet = ...; 

NSArray *result = [someSet valueForKey:@"@unionOfObjects.whatever"]; 

그것은 당신이 NSArray 모양의 구멍에 데이터를 밀어하는 NSSet (또는 다른 배열이 아닌 모음)을 원하는 코코아 바인딩에 어디 때문에 유용합니다.

+0

미래의 독자를위한 경고 : 내가 이것을 시도했을 때 다음과 같은 메시지가 나타납니다 : 'NSInvalidArgumentException', 이유 : '[<__ NSSetI 0x7ff069d02140> valueForKeyPath :] :이 클래스는 unionOfObjects 작업을 구현하지 않습니다.'(놀이터에서) NSSet에서'@ unionOfObjects'를 사용하는 것은 안전하지 않습니다. –