【问题标题】:How can I get failed URL from didFailProvisionalNavigation method如何从 didFailProvisionalNavigation 方法获取失败的 URL
【发布时间】:2015-05-17 01:34:47
【问题描述】:

我正在尝试为我的 web 视图显示错误消息,我需要知道不可用的 url,所以我实现了委托方法:

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
    [self.addressBar finishLoadingProgressAnimated:YES];
    NSLog(@"%@", webView.URL);
    [self showErrorPageForURL:error.userInfo[NSErrorFailingURLStringKey]];
}

但是 NSErrorFailingURLStringKey 已被弃用,那么如何获取失败的 URL? WKNavigation 的界面是空的。那时 webView.URL == nil。

【问题讨论】:

    标签: ios iphone nsurl wkwebview


    【解决方案1】:

    Swift 3 或 Swift 4

    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        if error._domain == "WebKitErrorDomain" {
            if let info = error._userInfo as? [String: Any] {
                if let url = info["NSErrorFailingURLKey"] as? URL {
    
                }
                if let urlString = info["NSErrorFailingURLStringKey"] as? String {
    
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用NSURLErrorFailingURLStringErrorKey 替换NSErrorFailingURLStringKey。如果你跳到 Xcode 中的定义,你会发现下面的讨论。

      这个常量取代了 NSErrorFailingURLStringKey,它是 在 Mac OS X 10.6 中已弃用。两个常量引用相同的值 为了向后兼容,但这个符号名有一个更好的前缀。

      【讨论】:

        猜你喜欢
        • 2012-11-23
        • 2021-05-08
        • 2017-05-01
        • 2023-04-07
        • 2020-10-25
        • 2011-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多