我有一个看起来像这样的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"];
,如果有多个结果,它似乎仍然只返回一个数组。我假设如果只有一个元素,我会得到一个带有一个元素的数组......但显然不是吗?
答案 0 :(得分:2)
您可以使用isKindOfClass
检查您正在处理的对象类型:
NSInteger numResults = 1;
if ([list isKindOfClass:[NSArray class]]) {
numResults = [list count];
}
答案 1 :(得分:1)
如果我理解正确,一个结果实际上会给你一个NSDictionary,但是多个结果会给你一个NSDrray的NSArray?
假设是这种情况,您可以检查您喜欢的对象类型:
if ([list isKindOfClass:[NSDictionary class]]) {
// Must be single result
}
else {
// Multiple results case
}
否则,如果我误解了,也许你可以澄清一下。