2

述語を持つ多くのオブジェクトを持つことができる配列をフィルタリングしています。パフォーマンス上の理由から、返される結果を制限したいと思います。配列がソートされていないので、限界に達したら検索を止めてほしい。

これは可能ですか?述語ディレクティブによるものか、それ以外によるものかはわかりません。

4

1 に答える 1

3

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