当元素有时是数组而有时不是时,在NSDictionary中获取孩子的计数

问题描述

| 我有一个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
}
否则,如果我误解了,也许您可​​以澄清一下。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...