代码之家  ›  专栏  ›  技术社区  ›  Cesar Bielich

正在拆分字符串,导致“Any”类型的值没有成员“组件”

  •  0
  • Cesar Bielich  · 技术社区  · 6 年前

    我有一个使用webview IOS和swift 4的函数。我想爆炸 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 回复  |  直到 6 年前
        1
  •  3
  •   Code Different    6 年前

    因为 result 可以是任何东西:字符串、数字、数组、JSON对象。。。取决于Javascript返回的内容。Swift无法在编译时知道这一点,因此它标记 结果 作为 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])
        }
    }