我的问题是关于 iPhone 开发的。
我试图弄清楚是否有办法只计算字典中的字典数量。
例如,假设这是我的字典
字典包含 5 个元素:
- 细绳
- 细绳
- NS词典
- NS词典
- NS词典
我只想计算 NSDictionaries...所以返回值应该是 3。
有没有办法做到这一点?
谢谢。
我的问题是关于 iPhone 开发的。
我试图弄清楚是否有办法只计算字典中的字典数量。
例如,假设这是我的字典
字典包含 5 个元素:
我只想计算 NSDictionaries...所以返回值应该是 3。
有没有办法做到这一点?
谢谢。
NSSet *dictKeys = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
return [obj isKindOfClass:[NSDictionary class]];
}];
NSUInteger numberOfDicts = [dictKeys count];
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;
}
也会起作用。
__block NSInteger countOfDictionaries = 0;
[dictionary enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))block {
if ([obj isKindOfClass:[NSDictionary class]]) {
countOfDictionaries++;
}
}];
如上所示,通过测试对象的类,简单地枚举字典中的每个对象并记录每个“NSDictionary”对象的计数。
使用 NSEnumrator 循环遍历您的 NSDictionary 并执行以下测试:
if ([myObject 类] == [NSDictionary 类]) c++;