#ios #objective-c #xcode #nsdictionary #afnetworking
#iOS #objective-c #xcode #nsdictionary #afnetworking
Вопрос:
Я пытаюсь вызвать внешний API со следующим кодом запроса afnetworking:
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, который я ожидаю увидеть:
Однако, когда я пытаюсь получить доступ к коду, например, ResponseObject [@»code»] Я получаю какой-то странный текст:
(__NSCFNumber *) $0 = 0xb00000000000fa33 (long)4003
Затем я попытался проанализировать это с помощью NSStringwithformat %ld, но это возвращает:
(__NSCFString *) $1 = 0x000060800005a850 @"-5764607523034170829"
Не уверен, что здесь происходит, был ли ResponseObject даже проанализирован должным образом как NSDictionary
любая помощь была бы оценена
Ответ №1:
я не уверен, что здесь происходит, но я рекомендую использовать Gloss framework для сериализации / десериализации JSON, чтобы напрямую отображать JSON на объекты.
Ответ №2:
я не уверен, что происходит, но это странно
поэтому я предлагаю вам отладить его шаг за шагом
Ответ №3:
Я полагаю, что число является плавающим, попробуйте
NSNumber *num = [responseObject objectForKey:@"code"];
int theValue = [num intValue];
Это может помочь.
Ответ №4:
итак, что вам нужно сделать, так это внутри вашего блока успеха,
NSDictionary *result = (NSDictionary *)responseObject;
for(NSDictionary *all in result){
int code = [all objectForKey:@"code"];
}
надеюсь, это поможет вашему.
примечание: лучше использовать model
и добавлять эти объекты в mutable array
.