2013-12-15 43 views
0

我可以使用收集操作员获取最大值的索引吗?NSArray的收集操作员

例如:

NSArray *array = @[@(0), @(10), @(2), @(3), @(48)]; 
NSInteger max = [array valueForKeyPath:@"@max.integerValue"]; 
NSInteger index = ?? <-- obtain index using collection operator 

索引是4对于这种情况。

感谢

+1

如果你知道你可以用最大'indexOfObject'找到对应的指数。 –

回答

1

我不这么认为,尤其是因为答案可能不是唯一的。 (即有可能是您的阵列中的多个48。)

1

而是执行此操作:

NSUInteger index = [array indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
     return (((NSNumber *)obj).integerValue == max); 
}];