タイトルの通り、下記のようなメソッドを作成してみた。
func waitIntervalCheckFlag(interval: Double, flag: () -> Bool, completion: () -> Void ) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(interval * Double(NSEC_PER_SEC)))
dispatch_after(time, dispatch_get_main_queue(), {
flag() ? completion() : self.waitIntervalCheckFlag(interval, flag: flag , completion: completion)
})
}
引数:
interval = クロージャ式の評価間隔
flag = 評価基準
completion = 完了時コールバック
使用例:
let wkWebView = WKWebView(frame: CGRect())
let request = NSURLRequest(URL: NSURL(string: "http://google.com")!)
wkWebView.loadRequest(request)
waitIntervalCheckFlag(0.3, flag: { wkWebView.title?.characters.count > 0 }, completion: { () in
print("title = \(wkWebView.title)")
})
ちょっと例が微妙な感じもしますが、
WebViewのtitleが取得できるまで0.3秒毎にクロージャ式を評価して
取得できたらコンソールに出力しています。