iOS 8中的NSError域检查条件失败

Pan*_*kar 1 if-statement nserror ios

我正在使用WKWebViewiOS 8设备,并想检查是否发生错误NSURLErrorDomain然后我想做一些更改,直到现在,我已经添加了下面的代码,但不知何故编译器进入其他部分,现在确定原因.

- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
    if ( [error domain] == NSURLErrorDomain )
    {
        //code here
    }
    else
    {
        //But compiler always comes here
    }
 }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是'NSURLErrorDomain',但编译器没有执行if循环并进入其他部分.谁能告诉我它为什么会这样?

Glo*_*del 9

domain物业是一个NSString,所以你需要给它这样的比较:

if ([[error domain] isEqualToString:NSURLErrorDomain]) {
Run Code Online (Sandbox Code Playgroud)

要了解Apple的开发人员如何处理此问题,请检查下面的代码,该代码是从错误处理编程指南中复制的,清单2-3:

NSString *errorMsg;
if ([[error domain] isEqualToString:NSURLErrorDomain]) {
    switch ([error code]) {
        case NSURLErrorCannotFindHost:
            errorMsg = NSLocalizedString(@"Cannot find specified host. Retype URL.", nil);
            break;
        case NSURLErrorCannotConnectToHost:
            errorMsg = NSLocalizedString(@"Cannot connect to specified host. Server may be down.", nil);
            break;
        case NSURLErrorNotConnectedToInternet:
            errorMsg = NSLocalizedString(@"Cannot connect to the internet. Service may not be available.", nil);
            break;
        default:
            errorMsg = [error localizedDescription];
            break;
    }
} else {
    errorMsg = [error localizedDescription];
}
Run Code Online (Sandbox Code Playgroud)