键值编码@UnionOfObjects

Jes*_*mpo 7 iphone collections key-value-coding ios kvc

我无法弄清楚@UnionOfObjects提供的简单valueForKey:或valueForKeyPath:不能做什么.

Apple文档:

@unionOfObjects运算符返回一个数组,该数组包含由运算符右侧的键路径指定的属性中的不同对象.与"@distinctUnionOfObjects"不同,不会删除重复的对象.以下示例返回事务中事务的收款人属性值:

NSArray *payees = [transactions valueForKeyPath:@"@unionOfObjects.payee"];
Run Code Online (Sandbox Code Playgroud)

由此产生的收款人阵列包含以下字符串:绿色电力,绿色电力,绿色电力,汽车贷款,汽车贷款,汽车贷款,通用电缆,通用电缆,通用电缆,抵押贷款,抵押贷款,抵押贷款,动物医院.

在上面的例子中,

NSArray *payees = [transactions valueForKey:@"payee"];
Run Code Online (Sandbox Code Playgroud)

将返回相同的值数组,但代码更少.我错过了什么?

Tom*_*mmy 3

我立即能想到的是它“返回一个包含......的数组”(强调我的)。所以它会方便:

NSSet *someSet = ...;

NSArray *result = [someSet valueForKey:@"@unionOfObjects.whatever"];
Run Code Online (Sandbox Code Playgroud)

因此,它在 Cocoa 绑定中任何需要NSSet(或其他非数组集合)将数据推入NSArray成形孔的地方都很有用。