字符串分割导致Value类型为“ Any?”没有成员“组件”

时间:2018-12-14 21:36:22

标签: swift

我有一个使用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])
        }
    }
}

1 个答案:

答案 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])
    }
}