2012-06-22 98 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”的计数,通过测试的类的对象。