0

我正在尝试捕获 webview 中显示的内容(不是源代码,它是一堆 javascripts)。我希望 wkwebview 的 createWebArchiveData 是正确的方法。

因此,我感到困惑的是从通话中返回的内容。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    
    webView.createWebArchiveData(completionHandler: { (result) in
        
    })

文档说结果是 Result<data, error>。我在上面做了一个 type(of:) 并且日志打印了 Result<data, error>...感谢 Apple...

当我打印结果时,我得到:

success(5990802 bytes)

以为可能是一个元组,但是 result.0 抛出了一个错误......

Value of type 'Result<Data, Error>' has no member '0'

试图将数据转换为字符串...没有用...

试图取消归档它,也失败了。

Cannot convert value of type 'Result<Data, Error>' to expected argument type 'Data

所以,任何帮助将不胜感激。我需要屏幕上显示的内容,而不是源代码(以防我搞错了)。

4

1 回答 1

0

我解决了这个问题。Result 对象是一个枚举,有成功和失败两种情况。您会像这样读取值(在本例中是因为它是数据):

webView.createWebArchiveData(completionHandler: { (result) in
        
        //var strResult = String(utf8String: result)
        switch result {
        case .success(let data):
            let str = String(decoding: data, as: UTF8.self)
            print(str)
            
        case .failure(let error):
            print(error)
        }
    })
于 2021-08-12T16:13:17.970 回答