我使用NSURLConnection's
sendSynchronousRequest:returningResponse:error:
方法(在单独的NSOperation
线程中)连接到外部服务器以检索数据。我如何知道操作结束是否超时,或其他网络错误?
问问题
4381 次
3 回答
14
如果有错误,返回时错误参数将非零sendSynchronousRequest:returningResponse:error:
。
您可以通过检查返回的值来检索错误代码[NSError code]
。超时的错误代码是NSURLErrorTimedOut
。
例如:
NSError *error = nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]
if (error.code == NSURLErrorTimedOut) {
// Handle time out here
}
于 2012-10-10T12:24:58.013 回答
0
检查这个extension
:
extension Error {
var isConnectivityError: Bool {
guard _domain == NSURLErrorDomain else { return false }
let connectivityErrors = [NSURLErrorTimedOut,
NSURLErrorNotConnectedToInternet,
NSURLErrorNetworkConnectionLost,
NSURLErrorCannotConnectToHost]
return connectivityErrors.contains(_code)
}
}
您可以在文档中检查NSURLError
域中的其他错误以扩展您的connectivityErrors
阵列。
于 2018-03-19T13:59:42.080 回答
-1
您可以向用户显示警报并将错误参数传递sendSynchronousRequest:returningResponse:error:
给警报的消息。
代码将是这样的:
[NSURLConnection sendSynchronousRequest: req returningResponse: &response error: &error];
if (error)
{
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
希望能帮助到你!!
于 2012-10-10T12:17:13.233 回答