Подтвердить что ты не робот

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?

4b9b3361

Ответ 1

По умолчанию AFHTTPRequestOperationManager устанавливает responseSerializer в экземпляр AFJSONResponseSerializer, поэтому responseObject уже является вашим разобранным JSON (в вашем случае это будет NSDictionary в соответствии с тем, что вы сказали).

Затем просто используйте его, как и словарь:

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

Ответ 2

Объект ответа уже является словарем! AFNetworking действительно справлялся с этим для вас.