objective c [__NSArrayM objectForKey:]:发送到实例的无法识别的选择器

时间:2017-10-13 10:36:42

标签: ios objective-c json

我声明 DATA 如下

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

我在控制台DATA中的表是:

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

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

2 个答案:

答案 0 :(得分: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"]

答案 1 :(得分:0)

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

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

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

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