我有一个使用Swift 4的Webview IOS的功能。我正试图爆炸result
,但我正在使用Value of type 'Any?' has no member 'components'
,但我不知道如何解决此问题。我是新手。
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.webView.evaluateJavaScript("document.getElementById('user_id').innerText") { (result, error) in
if result != nil {
let items = result.components(separatedBy: "|")
self.ref?.child("people").child(result as! String).setValue(["device_token": self.deviceTokenStringfinal])
}
}
}
答案 0 :(得分:3)
因为result
可以是任何东西:字符串,数字,数组,JSON对象……取决于Javascript返回的内容。 Swift无法在编译时知道这一点,因此将result
标记为Any
。
您必须在运行时进行强制转换:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.webView.evaluateJavaScript("document.getElementById('user_id').innerText") { (result, error) in
guard let result = result as? String else { return }
let items = result.components(separatedBy: "|")
self.ref?.child("people").child(result).setValue(["device_token": self.deviceTokenStringfinal])
}
}