Cocoa @firstObject键值编码KVC的集合对象运算符

Cocoa @firstObject键值编码KVC的集合对象运算符,cocoa,cocoa-bindings,key-value-coding,Cocoa,Cocoa Bindings,Key Value Coding,我经常需要检索属于集合的第一个对象。(使用该对象作为该集合的代表。) 我设想一个集合对象操作符,类似于 @unionOfObjects 但显然 @firstObject 是否可以创建这样一个收集操作符 目前无法定义自定义集合运算符。然而,由于一些内部魔法,有一个有趣的解决方案: NSSet *testSet = [NSSet setWithArray:@[@"one", @(1)]]; id object = [testSet valueForKey:@"@anyObjec

我经常需要检索属于集合的第一个对象。(使用该对象作为该集合的代表。)

我设想一个集合对象操作符,类似于

@unionOfObjects
但显然

@firstObject

是否可以创建这样一个收集操作符

目前无法定义自定义集合运算符。然而,由于一些内部魔法,有一个有趣的解决方案:

    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”]。本质上,集合和数组的某些访问器方法(lastObject、anyObject)似乎是键值编码的。@GabeRainbow,您的问题是关于使用集合运算符的。你绝对可以使用任何对象。警告,valueForKey:@“anyObject”将不起作用。valueForKey:@“@anyObject”将。这是由于收集操作符的一些实现细节造成的。感谢这里的澄清。我注意到苹果文档中的“@”拼写错误一定会引起一些头痛。当然,任何对象都能满足我的目的,因为我在集合中寻找任何有代表性的对象,而不是某个特定的对象,无论是先到后。