7

我无法弄清楚@UnionOfObjects 提供了一个简单的 valueForKey: 或 valueForKeyPath: 不能做的事情。

苹果文档:

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

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

生成的收款人数组包含以下字符串:绿色电力、绿色电力、绿色电力、汽车贷款、汽车贷款、汽车贷款、通用电缆、通用电缆、通用电缆、抵押贷款、抵押贷款、抵押贷款、动物医院。

在上面的例子中,

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

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

4

1 回答 1

3

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

NSSet *someSet = ...;

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

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

于 2012-08-29T00:29:19.863 回答