AFNetworking 2.0 – 使用responseObject作为NSDictionary

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中的特定键的值?

默认情况下, AFHTTPRequestOperationManagerresponseSerializer设置为一个AFJSONResponseSerializer实例,所以responseObject已经是你parsing的JSON(在你的情况下,根据你所说的,它将是一个NSDictionary )。

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

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

响应对象已经是一个字典! AFNetworking为您处理。