【发布时间】:2013-06-20 04:20:34
【问题描述】:
我经常需要检索属于 Set 的第一个对象。 (使用该对象作为该集合的代表。)
我设想了一个集合对象运算符,类似于
@unionOfObjects
但是很明显
@firstObject
有没有可能创建这样的Collection运算符!
【问题讨论】:
标签: cocoa cocoa-bindings key-value-coding
我经常需要检索属于 Set 的第一个对象。 (使用该对象作为该集合的代表。)
我设想了一个集合对象运算符,类似于
@unionOfObjects
但是很明显
@firstObject
有没有可能创建这样的Collection运算符!
【问题讨论】:
标签: cocoa cocoa-bindings key-value-coding
目前无法定义自定义集合运算符。然而,由于一些内部魔法,有一个有趣的解决方案:
NSSet *testSet = [NSSet setWithArray:@[@"one", @(1)]];
id object = [testSet valueForKey:@"@anyObject"];
NSLog(@"anyObject (%@): %@", NSStringFromClass([object class]), object);
UPD:忘了提另一个方便的技巧:你可以在NSArray上使用@lastObject!
【讨论】:
anyObject 可能会起作用。谢谢。生病试一试。在初次查看时,如果您有 nsset,为什么不直接使用 [testSet anyObject] 与 [testSet valueForKey@"anyObject"]。本质上,它看起来像 Sets 和 Arrays 的一些访问器方法(lastObject、anyObject)是键值编码的。