我的问题是关于iPhone的开发。计数词典中的词典数量
我想知道是否有一种方法可以只计算字典中的字典数量。
例如,让我们说这是我的字典
字典包含5个要素:
- 串
- 串
- 的NSDictionary
- 的NSDictionary
- 的NSDictionary
我想只计算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通过使用NSEnumrator和做如下测试:
如果([myObject的类] == [NSDictionary的类])C++;
哎哟,这就像乞求错误!特别是在处理像NSDictionary这样的类集群时。 – JustSid
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”的计数,通过测试的类的对象。
谢谢。很抱歉,因为很晚才接受答案......太晚了.. – Forrest