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 中按键获取具有特定值的对象

从 NSDictionary 获取包含 NSNumber 布尔值的键列表,其中值为 @YES

从 NSDictionary 数组中获取具有值的数组

如何从 NSDictionary 中的 NSDictionaries 获取所有值? [复制]

在从 NSDictionary 获取值时展开可选值时意外发现 nil

从 Swift 中的 NsDIctionary 获取价值