AFNetworking 2.0 - 使用responseObject作为NSDictionary?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

这是在AFNetworking 2.0中发送GET请求的推荐方式。我想获取json中特定键的值,所以我想使用responseObject作为NSDictionary。这是我正在尝试的:

NSError *jsonError = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:(NSData *)responseObject options:kNilOptions error:&jsonError];

它没有工作:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary bytes]: unrecognized selector sent to instance 0xa048120'

如何获得responseObject中特定键的值?

提问于
用户回答回答于

默认情况下,AFHTTPRequestOperationManager将responseSerializer设置为AFJSONResponseSerializer实例,因此responseObject已经是你的解析JSON(在你的情况下,根据你的说法,它将成为NSDictionary)

然后,像使用字典一样使用:

NSString *value = responseObject[@"someKey"];
用户回答回答于

响应对象已经是字典!AFNetworking为你处理。

扫码关注云+社区