2012-06-22 136 views
-1

我的問題是關於iPhone的開發。計數詞典中的詞典數量

我想知道是否有一種方法可以只計算字典中的字典數量。

例如,讓我們說這是我的字典

字典包含5個要素:

  1. 的NSDictionary
  2. 的NSDictionary
  3. 的NSDictionary

我想只計算NSDictionaries ...所以返回值應該是3.

有什麼辦法可以做到這一點?

謝謝。

回答

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

謝謝。很抱歉,因爲很晚才接受答案......太晚了.. – Forrest

0

環路通過您的NSDictionary通過使用NSEnumrator和做如下測試:

如果([myObject的類] == [NSDictionary的類])C++;

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

當然

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

中也能發揮作用。

1
__block NSInteger countOfDictionaries = 0; 

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

如上圖所示,只需通過你的字典的每個對象一一列舉,並保持每一個對象,它是一個「的NSDictionary」的計數,通過測試的類的對象。