2012-06-22 4 views
-1

내 질문은 iPhone 개발에 관한 것입니다.사전 내의 사전 수를

사전에있는 사전의 수를 계산하는 방법이 있는지 알아 내려고하고 있습니다. 예를 들어

,의 말을하자이 사전 5 개 요소를 포함

내 사전입니다 :

  1. 문자열
  2. 문자열을
  3. 있는 NSDictionary
  4. 있는 NSDictionary
  5. 있는 NSDictionary

NSDictionaries만을 계산하고 싶습니다 ... 반환 값은 3이어야합니다.

이 작업을 수행하는 방법이 있습니까?

감사합니다. 다음 시험 NSEnumrator를 사용하여 수행하여 NSDictionary에 관통

답변

4
NSSet *dictKeys = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) { 
    return [obj isKindOfClass:[NSDictionary class]]; 
}]; 
NSUInteger numberOfDicts = [dictKeys count]; 
+0

감사합니다. 답변을 늦게 받아들이셔서 죄송합니다 ... 매우 늦게 .. – Forrest

0

루프 :

경우 ([myObject에 클래스] == NSDictionary와 클래스])를 C++; 물론

NSUInteger count = 0; 
for (id obj in root) { 
    if ([obj isKindOfClass: NSDictionary.class]) ++ count; 
} 

+1

부끄러운 소리를내는 것과 같습니다. 특히 'NSDictionary'와 같은 클래스 클러스터를 처리 할 때 특히 그렇습니다. – JustSid

1
NSDictionary* root = ...; 

__block NSUInteger count = 0; 
[root enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL* stop) { 
    if ([obj isKindOfClass: NSDictionary.class]) ++ count; 
    *stop = NO; 
}]; 

은 잘 작동합니다. 위와 같이

1
__block NSInteger countOfDictionaries = 0; 

[dictionary enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))block    { 
    if ([obj isKindOfClass:[NSDictionary class]]) { 
      countOfDictionaries++; 
    } 
}]; 

, 단순히 사전의 모든 개체를 통해 열거하고 객체의 클래스를 테스트하여,에 "있는 NSDictionary"있는 모든 객체의 수를 유지한다.