Pre*_*sus 23 asynchronous ios swift
我不知道如何处理这种情况,因为我是iOS开发和Swift的新手.我正在执行数据提取,如下所示:
func application(application: UIApplication!, performFetchWithCompletionHandler completionHandler: ((UIBackgroundFetchResult) -> Void)!)
{
loadShows()
completionHandler(UIBackgroundFetchResult.NewData)
println("Background Fetch Complete")
}
Run Code Online (Sandbox Code Playgroud)
我的loadShows()函数解析从加载到UIWebView的网站获得的一堆数据.问题是我有一个在loadShows函数中等待10秒左右的计时器.这允许在我开始解析数据之前完全加载页面中的javascript.我的问题是完成处理程序在我的loadShows()之前完成.
我想要做的是为"isCompletedParsingShows"添加一个bool,并使completionHandler行等待完成,直到该bool为真.处理这个问题的最佳方法是什么?
Dai*_*jan 33
您必须将您的异步函数传递给稍后调用的处理程序:
func application(application: UIApplication!, performFetchWithCompletionHandler completionHandler: ((UIBackgroundFetchResult) -> Void)!) {
loadShows(completionHandler)
}
func loadShows(completionHandler: ((UIBackgroundFetchResult) -> Void)!) {
//....
//DO IT
//....
completionHandler(UIBackgroundFetchResult.NewData)
println("Background Fetch Complete")
}
Run Code Online (Sandbox Code Playgroud)
添加一个中间completionHandler
func application(application: UIApplication!, performFetchWithCompletionHandler completionHandler: ((UIBackgroundFetchResult) -> Void)!) {
loadShows() {
completionHandler(UIBackgroundFetchResult.NewData)
println("Background Fetch Complete")
}
}
func loadShows(completionHandler: (() -> Void)!) {
//....
//DO IT
//....
completionHandler()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42578 次 |
| 最近记录: |