ios - 从 NSDictionary 获取值
Posted
技术标签:
【中文标题】ios - 从 NSDictionary 获取值【英文标题】:ios - get values from NSDictionary 【发布时间】:2013-09-08 11:44:19 【问题描述】:我的服务器上有 JSON,它被解析为 ios 应用程序到 NSDictionary。 NSDictionary 看起来像这样:
(
text = Aaa;
title = 1;
,
text = Bbb;
title = 2;
)
我的问题是 - 如何从第一维获取文本,所以它应该是“Aaa”。我试过用这个:
[[[json allValues]objectAtIndex:0]objectAtIndex:0];
但是没有用,以错误结束
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray allValues]: unrecognized selector sent to instance 0x714a050'
那么你能帮我吗,如何从指定的索引中获取一个值?谢谢!
【问题讨论】:
你是从 php 来的,它是丑陋的数组字典热点吗? 你拥有的是一个包含两个字典的数组。 “()”字符表示一个数组。 它来自我的例子......但不要在意,我已经解决了...... :-)(感谢 Ramy Al Zuhouri) 【参考方案1】:该错误消息只是告诉您NSDictionary
(这是该数组的第一个对象,以及第二个对象)没有响应objectAtIndex
。
这会有点冗长,但它解释得更好:
NSArray *jsonArray = [json allValues];
NSDictionary *firstObjectDict = [jsonArray objectAtIndex:0];
NSString *myValue = [firstObjectDict valueForKey:@"text"];
【讨论】:
【参考方案2】:您的 JSON 对象是一个数组,包含两个字典。这就是获取值的方法:
NSDictionary* dict1= json[0];
NSString* text= dict1[@"text"];
NSString* title= dict1[@"title"];
【讨论】:
仍然收到此错误:(由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[__NSCFArray allValues]:无法识别的选择器已发送到实例 0x71571b0' @stepik21 抱歉,您没有发送 allValues 消息,我编辑了答案,再试一次 :-)【参考方案3】:试试这个:
NSString *txt = [[json objectAtIndex:0] objectForKey:@"text"];
更新:已修复错误。谢谢尤纳斯。
【讨论】:
'NSInvalidArgumentException',原因:'-[__NSCFArray allValues]:无法识别的选择器发送到实例 0x8892320' @stepik21 :请分享您如何解析 json。您还应该测试变量 json 是否实际上是 NSDictionary。试试这个 NSLog(@"%@",[json desc]); 我正在使用这个:json = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"url.com"]] options:kNilOptions error:&e]; 但没关系,我已经解决了:-) [json allValues] 你为什么需要那个? [[json objectAtIndex:0] objectForKey:@"text"] 完成这项工作以上是关于ios - 从 NSDictionary 获取值的主要内容,如果未能解决你的问题,请参考以下文章
从 NSDictionary 获取包含 NSNumber 布尔值的键列表,其中值为 @YES
如何从 NSDictionary 中的 NSDictionaries 获取所有值? [复制]