7

単純な valueForKey: または valueForKeyPath: では実行できない @UnionOfObjects が提供するものを理解できません。

アップルのドキュメント:

@unionOfObjects 演算子は、演算子の右側のキー パスで指定されたプロパティ内の個別のオブジェクトを含む配列を返します。「@distinctUnionOfObjects」とは異なり、重複したオブジェクトは削除されません。次の例は、トランザクション内のトランザクションの受取人プロパティ値を返します。

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

結果の受取人の配列には、次の文字列が含まれます: Green Power、Green Power、Green Power、Car Loan、Car Loan、Car Loan、General Cable、General Cable、General Cable、Mortgage、Mortgage、Mortgage、Animal Hospital。

上記の例では、

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

同じ値の配列を返しますが、コードは少なくなります。私は何が欠けていますか?

4

1 に答える 1

3

私がすぐに考えることができるのは、「 ...を含む配列を返す」ということだけです(私のものを強調してください)。したがって、次の場合に便利です。

NSSet *someSet = ...;

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

したがって、Cocoa バインディングNSSet(またはその他の非配列コレクション) にデータをNSArray整形された穴にプッシュする必要がある場合に便利です。

于 2012-08-29T00:29:19.863 に答える