使用NSDictionary keysOfEntriesPassingTest限制结果数:

时间:2012-10-24 20:31:21

标签: objective-c

我声明一个变量只是为了限制过滤NSDictionary的结果数量。有没有其他方法可以避免额外的变量?

我的代码:

//Pick one part from each item
__block int partsCounter = 0;
NSSet *itemsParts = [self.deckDictionary keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) {

    //filter with itemRef value
    CollectiblePart* part = (CollectiblePart*)obj;
    if([candidatesSet containsObject:[NSNumber numberWithInt: part.itemRef]]){

        if(partsCounter < quantity)
        {
            partsCounter++;
            return YES;
        }else{
            //stop the filtering
            return (*stop = NO);
        }
    }else{
        return NO;
    }
}];

1 个答案:

答案 0 :(得分:0)

不,这是最好的方法。

虽然该方法允许块在中途退出,但它不知道为什么必须这样做,因此不适合这样做。

在你的语义中,你需要保持一个记录,以便在某些事情超过特定阈值时跟踪。有一个变量可以做到这一点。