问题描述
|
我有一个NSDictionary,看起来像这样:
list
{{
-> id
-> name
-> color
},{
-> id
-> name
-> color
}}
当我循环浏览时效果很好!但不幸的是,有时结构看起来像这样:
list {
-> id
-> name
-> color
}
仅返回一个结果的地方。因此,我需要知道是否有一个或返回的结果不止一个。
我尝试通过查看ID密钥是否存在于\“ list \”中来检查结果的数量,但是不幸的是,当我执行valueForKey时,我得到了类似以下结果:(429,24),如果有则返回429只有一个结果。
但是我显然不能对429值进行计数。
这是我正在尝试做的事情之一,对多个结果都非常有用,但是如果有一个结果就不行了。
NSInteger numResults = [[list valueForKeyPath:@\"id.@count\"] intValue];
知道如何找出是一组结果还是单个结果?我对通过Web服务来自JSON对象的数据没有任何控制。
我也尝试使用[list mutableArrayValueForKey:@\"id\"];
,并且似乎只有在有多个结果的情况下才返回一个数组。我假设如果只有一个元素,我将返回一个带有一个元素的数组……但显然不是吗?
解决方法
您可以使用
isKindOfClass
检查要处理的对象类型:
NSInteger numResults = 1;
if ([list isKindOfClass:[NSArray class]]) {
numResults = [list count];
}
, 如果我理解正确,一个结果实际上将为您提供NSDictionary,但是多个结果将为您提供NSArray of NSDictionaries?
假设是这种情况,您可以像这样检查对象的类型:
if ([list isKindOfClass:[NSDictionary class]]) {
// Must be single result
}
else {
// Multiple results case
}
否则,如果我误解了,也许您可以澄清一下。