我正在尝试使用以下afnetworking请求代码调用外部API:
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
任何帮助将不胜感激
答案 0 :(得分:0)
我不确定这里发生了什么,但我建议使用Gloss framework进行JSON序列化/反序列化直接在对象上映射JSON。
答案 1 :(得分:0)
我不确定发生了什么,但很奇怪
所以我建议你可以一步一步地调试它
答案 2 :(得分:0)
我想这个数字是浮点数,试试
NSNumber *num = [responseObject objectForKey:@"code"];
int theValue = [num intValue];
这可能会有所帮助。
答案 3 :(得分:0)
所以你需要做的就是,在你的成功块内,
NSDictionary *result = (NSDictionary *)responseObject;
for(NSDictionary *all in result){
int code = [all objectForKey:@"code"];
}
希望这对你有所帮助。
注意:最好使用model
并将这些对象添加到mutable array
。