- [NSCFDictionary objectAtIndex:]:无法识别的选择器错误

时间:2014-05-27 10:57:17

标签: php ios objective-c json

我有一个简单的php文件,它提供了以下 JSON 数据:

{"a":"apple","b":"banana","c":"catnip"}

我已尝试过各种方法在iOS中解析这些数据,只需在 NSLog 中发布,例如:

 - (void) getData {
    NSURL *url = [NSURL URLWithString:@"http://bla.com/mapdata.php"];
    NSData *data = [NSData dataWithContentsOfURL:url];

    NSMutableArray *json = [NSJSONSerialization 
                            JSONObjectWithData:data 
                            options:kNilOptions 
                            error:nil];

    NSLog(@"The size of json is %lu", (unsigned long)[json count]);

    for (int i = 0; i < json.count; i++) {
        NSDictionary *row = [json objectAtIndex:i];
        NSLog(@"a: %@, b:%@, c:%@", [row objectForKey:@"a"], [row objectForKey:@"b"], [row objectForKey:@"c"]);
    }
}

我总是在这一行中遇到同样的错误:

NSDictionary *row = [json objectAtIndex:i];

错误消息: - [__ NSCFDictionary objectAtIndex:]:无法识别的选择器发送到实例0x1550a7d0

类似问题的其他答案无法帮助我解决问题,因此非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的JSON响应不是数组,它包含一个对象。所以你不能使用

NSDictionary *row = [json objectAtIndex:i];

只需使用:

NSDictionary *json = [NSJSONSerialization 
                            JSONObjectWithData:data 
                            options:kNilOptions 
                            error:nil];
NSLog(@"a: %@, b:%@, c:%@", [json objectForKey:@"a"], [json objectForKey:@"b"], [json objectForKey:@"c"]);