2016-06-12 19 views
0

私は自分のアプリの中にWebビューを持っています。作るしかしhttps://github.com/movielala/YoutubeSourceParserKitSwift + iOS:非同期呼び出しからクロージャを呼び出す方法は?

、:

extension WebBrowserViewController: WKNavigationDelegate { 
    func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) { 
    if (urlVideoType(webView.URL!) != VideoUrl.Unknown && urlVideoType(webView.URL!) != VideoUrl.Youtube) { 
     ... 
    } else if urlVideoType(webView.URL!) == VideoUrl.Youtube { 
     // the success and failure part don't work 
     presentYoutubeVideoIfAvailable(webView.URL!, success: decisionHandler(.Cancel), failure: decisionHandler(.Allow)) <------------------- 
    } else { 
     decisionHandler(.Allow) 
    } 
    } 
} 

マイpresentYoutubeVideoIfAvailable方法は、このユーチューブのURLパーサポッドを使用しています。彼らは要求をキャンセルする/許可する前にユーチューブの映像であれば、私は現在、それぞれのリクエストを見ていると見ています非同期呼び出しと私はそれが私の方法で成功と失敗のメソッドを呼び出すようにする方法がわからない:

func presentYoutubeVideoIfAvailable(url: NSURL, success:(), failure:()) { 
    Youtube.h264videosWithYoutubeURL(url) { [unowned self] (videoInfo, _) -> Void in 
     switch videoInfo?["url"] as? String { 
     case .Some(let videoUrlString): 
     VideoStore.addVideo(url.absoluteString, title: videoInfo?["title"] as? String ?? "Unknown") 
     success 
     self.presentVideo(NSURL(string: videoUrlString)!) 
     case .None: 
     print("herereee") // gets printed, so I know it's here 
     failure // doesn't do anything. it should be allowing the request but it isn't <----------------------------------- 
     self.showError(.YoutubeParsingFail) 
     } 
    } 
    } 

私はそれをしたいユーチューブポッドがURLを返す場合、それはウェブ閲覧要求をキャンセルしなければならないように、もしそれが私はそれを要求し続けることを望みます。どうすればいい?

+0

は '成功()'と '失敗()'あなたが実際にクロージャを呼び出していないことが必要です。 – sbarow

答えて

1

ここで何も起こっていない理由は、あなたがクロージャを呼んでいないということです。クロージャはそうのように、迅速で他の関数のように呼び出される必要があります。

success() failure()

関連する問題