将Objective-C block NSStackBlock转换为Swift 3
我正在为一个WKWebView导航代理编写一个被动扩展。此时,我编写了以下代码:将Objective-C block NSStackBlock转换为Swift 3,objective-c,swift3,delegates,wkwebview,rx-swift,Objective C,Swift3,Delegates,Wkwebview,Rx Swift,我正在为一个WKWebView导航代理编写一个被动扩展。此时,我编写了以下代码: public typealias NavigationHttpResponse = (WKWebView, WKNavigationResponse, (WKNavigationResponsePolicy) -> Swift.Void) public var decidePolicyForNavigationResponse: Observable<NavigationHttpResponse>
public typealias NavigationHttpResponse = (WKWebView, WKNavigationResponse, (WKNavigationResponsePolicy) -> Swift.Void)
public var decidePolicyForNavigationResponse: Observable<NavigationHttpResponse> {
let selector = #selector(WKNavigationDelegate.webView(_:decidePolicyFor:decisionHandler:)! as ((WKNavigationDelegate) -> (NavigationHttpResponse) -> ()))
return delegate.methodInvoked(selector)
.map { params in
let webView = params[0] as! WKWebView
let navigationResponse = params[1] as! WKNavigationResponse
let decisionHandler = params[2] as! ((WKNavigationResponsePolicy) -> Swift.Void)
return (webView, navigationResponse, decisionHandler)
}
}
在DePub控制台中,我得到:
Could not cast value of type '__NSStackBlock__' (0x12327d1a8) to '(__C.WKNavigationResponsePolicy) -> ()' (0x12218b8f0).
我怎样才能安全地从objective-c转换到Swift?
或者我可以采取哪种替代方法
谢谢
Could not cast value of type '__NSStackBlock__' (0x12327d1a8) to '(__C.WKNavigationResponsePolicy) -> ()' (0x12218b8f0).