2012-10-24 2 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

아니, 그 그것을 할 수있는 가장 좋은 방법입니다.

이 방법을 사용하면 블록을 중간에서 빠져 나갈 수 있지만 그 이유는 무엇인지 알 수 없으므로 그렇게하는 데 도움이되지 않습니다.

의미 상, 특정 임계 값을 초과 할 경우 추적을 유지해야합니다. 할 수있는 변수가 있다는 것이 합리적입니다.

관련 문제