获取 nsdictionary 中特定键的值
Posted
技术标签:
【中文标题】获取 nsdictionary 中特定键的值【英文标题】:get values of particular key in nsdictionary 【发布时间】:2013-04-26 09:43:42 【问题描述】:我将json
解析结果保存在dictionary
中,如下所示:
"statusCode":"200",
"body":[
"status":"success",
"remarks":null
],
"data":[
"abcd":[
"category":"a",
"title":"b",
"id":"24"
,
"category":"c",
"title":"crd",
"id":"65"
,
"category":"ds",
"title":"sd",
"id":"18"
]
,
"efgh":[
"category":"ds",
"title":"sd",
"id":"18"
,
"category":"sd",
"title":"sd",
"id":"1"
]
,
"ijkl":[
"category":"ds",
"title":"sd",
"id":"18"
,
"category":"sd",
"title":"sd",
"id":"1"
]
]
key @"data" 的数据可以使用
保存到数组中NSMutableArray *getdata=[[NSMutableArray alloc]init];
getcat=[results objectForKey:@"data"];
现在我应该为第一个索引中的values(category, title, id)
做些什么,即"abcd"
。
如果有人知道,请看一下。
谢谢大家。
【问题讨论】:
【参考方案1】:以下将为您提供所需的对象
NSDictionary *dict=[results valueForKeyPath:@"data.abcd"][0];
个人:
NSString *categoryString=[[results valueForKeyPath:@"data.abcd"][0] objectForKey:@"Category"];
NSString *idString=[[results valueForKeyPath:@"data.abcd"][0] objectForKey:@"id"];
NSString *titleString=[[results valueForKeyPath:@"data.abcd"][0] objectForKey:@"title"];
还有,
NSString *categoryString=dict[@"Category"];
NSString *idString=dict[@"id"];
NSString *titleString=dict[@"title"];
【讨论】:
我无法获取字典中的值,即类别、ID、标题。 nslog dict,如我的回答所示,并告诉打印的内容。 我通过 NSString *cat=[dict valueForKeyPath:@"id"][0]; 得到了内部键值这意味着获取特定键的所有 id,例如我必须使用 for 循环的“abcd”下的所有 id。 如何从数据中获取“abcd”键名?因为我想将“abcd”显示为我的 tableview 部分标题。在我的例子中,“abcd”和“efgh”是动态的。【参考方案2】:像这样检查:
NSString *value=[[[getcate valueForKey:@"abcd"] objectAtIndex:0] valueForKey:@"category"];
【讨论】:
【参考方案3】:这是一个数组,所以请使用objectAtIndex:
(即[getcat objectAtIndex:0]
或getcat[0]
)
【讨论】:
是的,我已经这样做了.. NSMutableArray *firstarray=[getcat objectAtIndex:0]; "abcd":[ "category":"a", "title":"b", "id":"24" , "category":"c", "title":"crd", "id ":"65" , "category":"ds", "title":"sd", "id":"18" ] 但是现在如何在 abcd 中获取值,即类别、标题、id跨度> 那是另一本词典。我不明白为什么这会给这么多人带来这么多麻烦。你已经在这一行做了同样的事情 ->getcat=[results objectForKey:@"data"];
所以再做一次。 JSON 不是火箭科学。你只能得到大约 5 或 6 种不同的类型,并且只有 两种 集合类型。所以集合要么是数组(按数字获取),要么是字典(按字符串获取)。以上是关于获取 nsdictionary 中特定键的值的主要内容,如果未能解决你的问题,请参考以下文章
哪种检查 NSDictionary 是不是包含特定键的方法更快?
具有深度嵌套层次结构的不可变 NSDictionary:更改键的值?