有没有办法找到NSArray中所有匹配的对象?

时间:2018-08-03 20:28:20

标签: ios objective-c

如果我有一个具有多个int值的NSArray对象(例如@ [1,5,3,8,1,1]),那么在Objective-C中有一种方法可以找到 all的索引匹配的对象?

对于1,给定上面的数组,取回1,5和6?

我可以使用for循环,但是一直在寻找一种更快的方法。

谢谢。

1 个答案:

答案 0 :(得分:5)

首先,索引是从零开始的,因此预期索引是0、4和5。

我想ObjC中最有效的方法是indexesOfObjectsPassingTest,它返回一个NSIndexSet

NSArray<NSNumber *> *array = @[@1,@5,@3,@8,@1,@1];
NSIndexSet *indexSet = [array indexesOfObjectsPassingTest:^BOOL(NSNumber *obj, NSUInteger idx, BOOL * _Nonnull stop) {
    return [obj isEqualToNumber:@1];
}];
NSLog(@"%@", indexSet);