【问题标题】:How to extract data from NSMutableArray如何从 NSMutableArray 中提取数据
【发布时间】:2015-04-10 17:46:07
【问题描述】:

想从 NSMutableArray 中提取值

服务调用后,我得到了存储在 NSMutableArray 中的响应

`arrayList` = responseData 

响应数据是 Jason 字符串

下面是响应数据结构。

 {
        firstSet =     (
        );
        secondSet =     {
            id = 12;
            name = rohan;
        };
        "status_code" = 200;
        success = 1;
    }

我想从 arrayList 中提取 name 字段和 id。 这是我尝试过的,对我不起作用。

[[[arrayList objectAtIndex:0] objectForKey:@"secondSet"] objectForKey:@"name"]];

错误信息 -[__NSDictionaryM objectAtIndex:]:无法识别的选择器发送到实例 0x7c6763e0

@全部 提前致谢。

【问题讨论】:

  • 要解决它我需要将 NsMutableArray 清除为 NSmutablDictionary... 从那里我可以提取值!?
  • 要解决你需要不将 NSDictionary 地址分配给 NSArray 指针。
  • @HotLicks 我同意你的说法,而且我得到了数据结构。

标签: ios objective-c json nsmutablearray


【解决方案1】:

您所说的“arraylist”变量实际上是一个字典。尝试向它询问“secondset”

[[arrayList objectForKey:@"secondSet"] objectForKey:@"name"];

【讨论】:

  • 我定义的变量是 NSMutableArray 而不是 NSMutableDictionary,
  • 不管它的定义是什么 - 不知何故(可能通过 JSON 反序列化器?)引用指向字典。错误表明如此。由于所有 Objective-C 引用都只是指针,而不是检查,因此在运行时很容易有指向错误对象类型的东西。
  • @kiran - 运行的代码并不关心你如何定义指针——这只对编译器有意义,而且只有在它正确的情况下。对象类型由 JSON 数据定义。
【解决方案2】:

你会得到json,你可以像这样处理

NSDictionary *dic;
if (data!=nil)
    {
        dic = [NSJSONSerialization
               JSONObjectWithData:data //1
               options:NSJSONReadingMutableContainers
               error:&error];
    }
NSString *name = [[dic objectForKey:@"second"] objectForKey:@"name"];

【讨论】:

  • 他已经解析过了。而且您无论如何都无法证明正确的错误检查。
猜你喜欢
  • 2011-12-08
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 2010-11-23
相关资源
最近更新 更多