我正在过滤一个可以包含许多带有谓词的对象的数组。出于性能原因,我想限制返回的结果。数组未排序,因此一旦达到限制,我希望搜索停止。
这可能吗?我不确定是通过谓词指令还是其他方式。
我正在过滤一个可以包含许多带有谓词的对象的数组。出于性能原因,我想限制返回的结果。数组未排序,因此一旦达到限制,我希望搜索停止。
这可能吗?我不确定是通过谓词指令还是其他方式。
indexesOfObjectsPassingTest
我认为您可以使用and的这种组合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];