在GET请求期间,我在处理responseObject中的空AFHTTPRequestOperation时遇到问题。我正在使用AFNetworking库。

如果responsteObject的内容为“0个对象”,则当我尝试访问responseObject中不可用的键时,我的应用程序崩溃。我该如何优雅地处理呢?这是我的代码的样子:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:requestURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(responseObject[@"NotAvailableKey"];
    }
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

如果responseObject的内容不是“0个对象”,则代码可以正常工作。即使我试图访问不在responseObject中的键。

最佳答案

您的代码崩溃,因为responseObject有时不在NSDictionary中。因此,它不会响应objectForKey:。您应该检查什么是responseObject类:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:requestURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    if ([responseObject isKindOfClass:[NSDictionary class]]
    {
         NSLog(responseObject[@"NotAvailableKey"]);
    }
    else
    {
         NSLog(@"Incorrect responseObject");
    }
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

关于ios - 如何在AFHTTPRequestOperation中处理空的responseObject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23570031/

10-11 20:26