2012-10-24 102 views
0

我声明了一个变量来限制筛选NSDictionary的结果数量。有没有其他方法可以避免额外的变量?使用NSDictionary keysOfEntriesPassingTest限制结果数量:

我的代码:

//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; 
    } 
}]; 
+0

添加自己的类别方法' - [NSDictionary(KZAdditions)kz_firstKeys:ofEntriesPassingTest:]''可能会有点滑稽,它会在内部处理迄今为止已通过测试的条目数。 –

+0

是的,我认为是。至少在类别中我可以隐藏这个混乱。 –

回答

0

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

虽然该方法允许该块在中途退出,但它不知道为什么它必须这样做,并且因此不能容纳任何帮助。

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