2016-11-30 67 views
0

在WKWebView中,我們有一個方法evaluateJavaScript。我已經重寫了這個方法來添加自定義代碼。在線創建關閉

override open func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Swift.Void)? = nil) 
{ 
     let b:Bool? = true 
     let error: Error? = NSError(domain: "com.My.Tests", code: 1000, userInfo: nil) as Error 
     let completion = (b, error) -> Void 
     evaluateJavaScript(javaScriptString, completionHandler: completion) 
} 

如何通過完成?這是拋出一個錯誤。

+0

這取決於您正在使用的Swift版本。 –

+0

我已經更新了這個問題。 –

+0

*「這是拋出一個錯誤。」* - 什麼錯誤? – luk2302

回答

0

這不是一個真正的關閉。

簽名希望像

let completion = { (b, error) in print(b, error) } 

申報berror變量是無用的,因爲berror從方法返回。

0
override open func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Swift.Void)? = nil) 
{ 
     let b:Bool? = true 
     let error: Error? = NSError(domain: "com.My.Tests", code: 1000, userInfo: nil) as Error 
     evaluateJavaScript(javaScriptString) { (result, error) in 
      if error != nil { 
      completionHandler?(nil, error) 
      } else { 
      completionHandler?(result, nil) 
      } 
     } 
} 
0

您的completion不是關閉。它應該是類似

let completion = { (b: Any?, error: Error?) -> Void in 
    print("\(error)") 
} 

我假設你想讓你的WKWebView行事像一些Javascript評估失敗。如果是這樣的話,你可以:

override func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Void)? = nil) { 
    evaluateJavaScript(javaScriptString) { b, error in 
     completionHandler?(true, NSError(domain: "com.My.Tests", code: 1000)) 
    } 
} 

或者,如果你沒有真正需要評估的JavaScript,但只是很失敗(例如,在測試時碰傷它):

override func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Void)? = nil) { 
    completionHandler?(true, NSError(domain: "com.My.Tests", code: 1000)) 
}