2016-10-23 7 views
0

Я пытаюсь вызвать внешний API со следующим afnetworking код запроса:Брус разобрать afnetworking ответ JSON в NSDictionary

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; 
manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
         destination, @"destination", 
         nil]; 

[manager POST:baseUrl parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
     completion(nil, responseObject); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    completion(error, nil); 
    NSLog(@"error: %@", error); 
}]; 

Когда я распечатать responseObject я получаю следующее который является JSON, что я ожидаю см:

enter image description here

Однако при попытке получить доступ к коду, например, responseObject [@ «код»] я получаю какой-то странный текст:

(__NSCFNumber *) $0 = 0xb00000000000fa33 (long)4003 

Затем я попытался разобрать это с NSStringwithformat% Л.Д., но возвращает:

(__NSCFString *) $1 = 0x000060800005a850 @"-5764607523034170829" 

Не уверен, что здесь происходит, будь то responseObject даже был разобран правильно как NSDictionary

любая помощь будет оценена

ответ

0

я не уверен, что здесь происходит, но я рекомендую использовать рамки Gloss для JSON Serializing/Deserializing для непосредственного отображения JSON на объектах.

http://harlankellaway.com/Gloss/

0

я не уверен, что происходит, но это странно

поэтому я предлагаю вы можете отлаживать его шаг за шагом

0

Что я полагаю, что число с плавающей точкой, попробуйте

NSNumber *num = [responseObject objectForKey:@"code"]; 
int theValue = [num intValue]; 

Это может помочь.

0

так, что вы должны сделать, это, внутри вас успех блока,

NSDictionary *result = (NSDictionary *)responseObject; 

for(NSDictionary *all in result){ 
    int code = [all objectForKey:@"code"]; 
} 

надеюсь, что это поможет вашему.

примечание: лучше использовать model и добавить эти объекты в mutable array.

 Смежные вопросы

  • Нет связанных вопросов^_^