2012-08-28 59 views
7

我找不出@UnionOfObjects提供了一個簡單的valueForKey:或valueForKeyPath:無法做到的事情。Key-Value Coding @UnionOfObjects

Apple docs:

的@unionOfObjects操作員返回包含在通過向 運算符右側的關鍵路徑中指定的屬性的不同 對象陣列。與「@distinctUnionOfObjects」不同,重複的對象不是 已刪除。下面的示例返回 交易的收款人屬性值的交易:

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

所得收款人陣列包含以下字符串:綠色 電源,綠色電源,綠色電源,汽車貸款,汽車貸款,汽車貸款,一般 電纜,通用電纜,通用電纜,按揭,按揭,按揭, 動物醫院。

在上述例子中,

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

將返回值的相同的陣列中,但具有更少的代碼。我錯過了什麼?

+1

當您在OSX上使用綁定時,KVO的這些功能提供了很大的價值。 –

回答

3

我能立即想到的是它「返回一個包含...」的數組(強調我的)。因此,這將是方便:

NSSet *someSet = ...; 

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

它是有用的,因此在你想要一個NSSet(或其他非陣列集合)將數據推入NSArray形孔Cocoa綁定的任何地方。

+0

對未來讀者的警告:當我嘗試這樣做時,我得到:''NSInvalidArgumentException',原因:'[<__ NSSetI 0x7ff069d02140> valueForKeyPath:]:該類沒有實現unionOfObjects操作。(在操場中),所以它可能在NSSet上使用'@ unionOfObjects'完全不安全。 –