2

我正在过滤一个可以包含许多带有谓词的对象的数组。出于性能原因,我想限制返回的结果。数组未排序,因此一旦达到限制,我希望搜索停止。

这可能吗?我不确定是通过谓词指令还是其他方式。

4

1 回答 1

3

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];
于 2012-10-10T13:58:32.133 回答