AFNetworking 2.0 - use responseObject as NSDictionary

霸气de小男生 提交于 2019-12-20 10:33:09

问题


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);
}];

this is the recommended way to send GET request in AFNetworking 2.0. I want to get the value of a specific key in the json, so I want to use responseObject as NSDictionary. this is what I was trying:

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

it didn't work:

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

how can I get the value of a specific key in responseObject?


回答1:


By default, AFHTTPRequestOperationManager sets responseSerializer to an AFJSONResponseSerializer instance, so responseObject already is your parsed JSON (in your case, it'll be an NSDictionary according to what you said).

Then, just use it as you'd use a dictionary:

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



回答2:


The response object is already a dictionary! AFNetworking did handle that for you.



来源:https://stackoverflow.com/questions/19086660/afnetworking-2-0-use-responseobject-as-nsdictionary

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!