在GET请求期间,我在处理AFHTTPRequestOperation中的空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中的密钥。
发布于 2014-05-09 17:01:50
您的代码崩溃是因为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);
}];发布于 2014-05-09 17:00:20
使用带有responseObject计数的条件
if ([responseObject count] == 0) {
//do nothing
return;
}发布于 2014-05-09 17:06:55
在尝试访问键值之前,您可能希望确保您的响应对象是字典。它可能作为一个数组返回,该数组将崩溃,类似于“非键值编码”异常。
https://stackoverflow.com/questions/23570031
复制相似问题