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);
}];
это рекомендуемый способ для отправки запроса GET
в AFNetworking 2.0. Я хочу получить значение конкретного ключа в 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
?
Ответы
Ответ 1
По умолчанию AFHTTPRequestOperationManager
устанавливает responseSerializer
в экземпляр AFJSONResponseSerializer
, поэтому responseObject
уже является вашим разобранным JSON (в вашем случае это будет NSDictionary
в соответствии с тем, что вы сказали).
Затем просто используйте его, как и словарь:
NSString *value = responseObject[@"someKey"];
Ответ 2
Объект ответа уже является словарем! AFNetworking действительно справлялся с этим для вас.