我正在过滤一个可以包含许多具有谓词的对象的数组。我想限制因性能原因返回的结果。数组没有排序,所以一旦达到限制,我希望搜索停止。
这可能吗?我不确定是否通过谓词指令或其他方式。
答案 0 :(得分:2)
我认为您可以使用indexesOfObjectsPassingTest
和objectsAtIndexes
的这种组合:
NSUInteger count = 0;
NSUInteger limit = ...;
NSIndexSet *set = [myArray indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
BOOL pass = ... // check if object passes test;
if (pass) {
count++;
if (count >= limit)
*stop = YES; // stops further processing of the array
}
return pass;
}];
NSArray *filteredArray = [myArray objectsAtIndexes:set];