0

자바 스크립트에 값을 보내고 나서 자바 스크립트에서 결과를 반환합니다. 그러나 javascript func에 시간이 필요하기 때문에 반환 값 (b)이 null로 유지되는 데 시간이 걸립니다. 결과를 기다리는 스레드를 만들어야한다고 생각합니다. 아래 코드는 아무 것도 반환하지 않습니다.StringbyEvaluatingJavascript 함수의 스레드

func webViewDidFinishLoad(_ webView: UIWebView) 
{ 
    var b = "" 
    //Threat gcdc 
    DispatchQueue.main.async { 
    b = webView.stringByEvaluatingJavaScript(from: "getURL('\(self.song_number)')")! 
    } 
    print(b) 
} 
+0

시도를 ** evaluateJavaScript (_ : completionHandler :) **. 나는 너에게 약간의 실수가 있다고 생각한다. – Sergey

+0

@ Sergey 그 방법을 연구했지만 사용 방법을 잘 모릅니다. 더 자세한 정보를 제공 할 수 있습니까? –

답변

0

시도가 evaluateJavaScript (_ 사용하려면 사용 completionHandler :

webView.evaluateJavaScript("getURL('\(self.song_number)')") { (result, error) in 
     if let error = error 
     { 
     print("\(error)"); 
     return 
     } 
     if let song = result as? String 
     { 
     print("\(song)"); 
     } 
}