我正在尝试找出最合适的方法来处理在UIWebView
中加载页面时可能发生的错误。
如果我发现网络相关问题或与服务器相关的问题,我想提醒用户。我无法找到有关要检查的特定错误代码的任何详细信息。这就是我现在所拥有的:
NSInteger errorCode = [error code];
NSString* title = nil;
NSString* message = nil;
if (errorCode == NSURLErrorNetworkConnectionLost || errorCode == NSURLErrorNotConnectedToInternet) {
title = @"Error";
message = @"The network connection appears to be offline.";
}
if (errorCode == NSURLErrorTimedOut || errorCode == NSURLErrorBadServerResponse) {
title = @"Error";
message = @"There was an error loading the request. Please try again later.";
}
if (title != nil) {
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
alert.tag = TAG_WEB_ERROR;
[alert show];
}
我是否在检查错误代码?有关更好地检查和处理潜在错误的方法的想法吗?
答案 0 :(得分:4)
部分错误代码在NSURLError.h
中定义
例如NSURLErrorTimedOut
if ([error.domain isEqualToString:NSURLErrorDomain]) {
if(error.code == NSURLErrorTimedOut) {
...
}
}
不确定UIWebView是否返回了完整的错误代码集。 并且没有像NSError-s这样的东西,你需要检查代码和域。
答案 1 :(得分:1)
假设您在视图控制器中使用UIWebView,您可以将视图控制器设置为UIWebView的委托,并从UIWebViewDelegate协议实现以下方法
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
alert.tag = TAG_WEB_ERROR;
[alert show];
}
答案 2 :(得分:0)
也许没有直接回答你的问题(我是否检查了正确的错误代码?),但在NSError
的上下文中NSURLErrorDomain
CFNetworkErrors
和{{1}}。
该列表在整齐格式的表格中包含可能的错误代码,错误域和相关原因。