使用Nsdictionary Keysofentriespassingtest限制结果数:



我正在声明一个变量,只是为了限制过滤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;
    }
}];

不,这是做到这一点的最好方法。

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

在您的语义中,您需要保留一个计数,以保持跟踪是否超过特定阈值。有一个变量是有道理的。

最新更新