Расщепление строки вызывает значение типа 'Any?'не имеет члена 'компоненты' - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть функция, использующая 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 Ответ

0 голосов
/ 15 декабря 2018

Потому что 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])
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...