【问题标题】:objective c [__NSArrayM objectForKey:]: unrecognized selector sent to instance目标c [__NSArrayM objectForKey:]:发送到实例的无法识别的选择器
【发布时间】:2017-10-13 10:36:42
【问题描述】:

我声明 DATA 如下

@property(强,非原子)NSDictionary *DATA;

我在控制台 DATA 中的表是:

(
    {
    comment = "";
    deadline = deadline;
    id = 2;
    responsible = "responsable action 1";
    status = pending;
    title = "";
}
)

但是NSLog(@"%@",[DATA objectForKey:@"deadline"]);有问题

【问题讨论】:

  • 看起来您的 DATA 包含字典数组,而不仅仅是字典。检查您为此属性设置值的代码。
  • 试试这个:NSLog(@"%@",[DATA[0] objectForKey:@"deadline"]);

标签: ios objective-c json


【解决方案1】:

您正在将此DATA 对象用作NSDictionary,但它是NSArray。您可以查看从( 开始的日志,这表明它是一个数组。

你也可以这样检查,

    if ([DATA isKindOfClass:[NSDictionary class]]) {
      //then this is dictionary
    }else{
        // other datatype
    }

在用作NSLog(@"%@",[DATA objectForKey:@"deadline"]) 之前。

如果你现在想访问,你可以使用 as,但是这个 DATA 应该是 NSArray or NSMutableArray

@property (strong, nonatomic) NSArray *DATA;

[[DATA objectAtIndex:0] objectForKey:@"deadline"]

【讨论】:

    【解决方案2】:

    上面的 JSON 响应是一个数组而不是字典,() = 数组和 {} = 字典。

    理想情况下,你应该有类似的东西,

    {  
       "comment":"",
       "deadline":"deadline",
       "id":2,
       "responsible":"responsable action 1",
       "status":"pending",
       "title":""
    }
    

    不过,您可以尝试使用数组而不是字典,并检查它在解析时是否会出错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多