如果我有一个具有多个int值的NSArray对象(例如@ [1,5,3,8,1,1]),那么在Objective-C中有一种方法可以找到 all的索引匹配的对象?
对于1,给定上面的数组,取回1,5和6?
我可以使用for循环,但是一直在寻找一种更快的方法。
谢谢。
答案 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);