计算字典中的字典数

时间:2012-06-22 15:25:04

标签: iphone objective-c nsdictionary

我的问题是关于iPhone开发。

我试图弄清楚是否有办法只统计字典中的字典数量。

例如,让我们说这是我的字典

字典包含5个元素:

  1. 字符串
  2. 字符串
  3. 的NSDictionary
  4. 的NSDictionary
  5. 的NSDictionary
  6. 我想只计算NSDictionaries ...所以返回值应为3。

    有没有办法实现这个目标?

    感谢。

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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;
}

也可以。

答案 2 :(得分:1)

__block NSInteger countOfDictionaries = 0;

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

如上所示,通过测试对象的类,只需枚举字典中的每个对象并保留每个“NSDictionary”对象的计数。

答案 3 :(得分:0)

使用NSEnumrator遍历您的NSDictionary并执行以下测试:

  

if([myObject class] == [NSDictionary class])c ++;