2013-09-30 12 views
17
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); 
}]; 

to recommended way wysłać GET wniosek w AFNetworking 2.0. Chcę uzyskać wartość określonego klucza w jsonie, więc chcę użyć responseObject jako . to co starałem:AFNetworking 2,0 - użyj responseObject jak NSDictionary

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

to nie działa:

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

jaki sposób można uzyskać wartość określonego klucza w responseObject?

Odpowiedz

30

Domyślnie AFHTTPRequestOperationManager zestawy responseSerializer do instancji AFJSONResponseSerializer, więc responseObject już jest twój Parsed JSON (w przypadku, będzie to stanowić NSDictionary zgodnie z tym co powiedziałeś).

Potem tylko go używać, jak można użyć słownika:

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

Miałem podobny problem z wykorzystaniem AFNetworking. Dostaję analizowany obiekt JSON i trzeba go przechowywać w tablicy do późniejszego wykorzystania. Czy przeanalizowany JSON jest słownikiem z łańcuchami jako wartościami? Wydaje mi się, że nie mogę użyć KVC, aby wejść do słownika. – noobsmcgoobs

5

Obiekt odpowiedzi jest już słownikiem! AFNetworking poradził sobie z tym za ciebie.

+0

@Irfan: Myślę, że twoja typografia utrudnia czytanie. – vikingosegundo

Powiązane problemy