gpt4 book ai didi

swift - 尝试解析 An 时对初始化 'init(_:)' 的模糊引用?对象到 Swift 中的字符串

转载 作者:行者123 更新时间:2023-11-28 05:40:38 25 4
gpt4 key购买 nike

我正在尝试将 Any? 对象解析为字符串,其中包含在 JS 执行后来自 WKWebView 的 HTML 文档。

如果我尝试打印 Html: Any? 对象,一切都显示在控制台上,但是当我尝试将它存储在 String var 中以用它做其他事情时,出现错误

Ambigous reference to initializer 'init(_:)'

这是我的代码:

func getHTML() {
miWEBVIEW.evaluateJavaScript("document.documentElement.outerHTML.toString()", completionHandler: { (html: Any?, error: Error?) in
print(html) // -> This works showing HTML on Console, but need in String to manipulate
return html
})
}

这是我在按钮事件中调用函数的地方:

let document: Any? = getHTML()
var documentString = String(document) // -> error appears in this line

最佳答案

问题是您的 getTML 方法返回 Void。您不能用它初始化 String 对象。除此之外,WKWebView evaluateJavaScript 是一个异步方法。您需要向 getHTML 方法添加完成处理程序:

func getHTML(completion: @escaping (_ html: Any?, _ error: Error?) -> ()) {
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
completionHandler: completion)
}

然后你需要像这样调用你的 getHTML 方法:

getHTML { html, error in
guard let html = html as? String, error == nil else { return }
self.doWhatever(with: html)
}

func doWhatever(with html: String) {
print(html)
// put your code here
}

关于swift - 尝试解析 An 时对初始化 'init(_:)' 的模糊引用?对象到 Swift 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com