【问题标题】:AFNetworking 2.0 - use responseObject as NSDictionaryAFNetworking 2.0 - 使用 responseObject 作为 NSDictionary
【发布时间】:2013-10-05 20:52:54
【问题描述】:
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 请求的 recommended way。我想获取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 中特定键的值?

【问题讨论】:

    标签: ios iphone objective-c nsdictionary afnetworking-2


    【解决方案1】:

    默认情况下,AFHTTPRequestOperationManagerresponseSerializer 设置为AFJSONResponseSerializer 实例,因此responseObject 已经是您解析的JSON(在您的情况下,根据您所说的,它将是NSDictionary)。

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

    NSString *value = responseObject[@"someKey"];
    

    【讨论】:

    • 我在使用 AFNetworking 时遇到了类似的问题。我得到一个解析的 JSON 对象,需要将它存储在一个数组中以备后用。解析的 JSON 是一个以字符串为值的字典吗?虽然我似乎无法使用 KVC 进入字典
    【解决方案2】:

    响应对象已经是字典了! AFNetworking 确实为您解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多