-1

我的问题是关于 iPhone 开发的。

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

例如,假设这是我的字典

字典包含 5 个元素:

  1. 细绳
  2. 细绳
  3. NS词典
  4. NS词典
  5. NS词典

我只想计算 NSDictionaries...所以返回值应该是 3。

有没有办法做到这一点?

谢谢。

4

4 回答 4

4
NSSet *dictKeys = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
    return [obj isKindOfClass:[NSDictionary class]];
}];
NSUInteger numberOfDicts = [dictKeys count];
于 2012-06-22T15:31:02.653 回答
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;
}

也会起作用。

于 2012-06-22T15:32:04.900 回答
1
__block NSInteger countOfDictionaries = 0;

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

如上所示,通过测试对象的类,简单地枚举字典中的每个对象并记录每个“NSDictionary”对象的计数。

于 2012-06-22T16:33:43.977 回答
0

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

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

于 2012-06-22T15:28:49.587 回答