我是iOS编程的新手,并尝试创建我的第一个应用程序。我正在使用
从服务器获取一些数据 var task = NSURLSession.sharedSession().dataTaskWithRequest(request,
completionHandler: { (data, response, error) -> Void in
我知道completeHandler闭包中的所有代码都在任务完成时执行。从我的ViewController,我想检查这个任务是否已经完成,并且没有加载表,直到它有。如何检查此任务是否已完成?
我想我可以让completionHandler在运行时将一些全局布尔变量设置为true,并且我可以在我的ViewController中检查这个变量,但我觉得有一个更好的方法来使用内置功能,我只是不知道。
答案 0 :(得分:3)
视图控制器不需要知道何时调用completionHandler
。您所做的只是completionHandler
实际将tableView.reload()
发送回主队列(然后触发调用UITableViewDataSource
方法)。它是启动UI更新的completionHandler
,而不是相反:
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
// check for errors and parse the `data` here
// when done
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reload() // this results in all of the `UITableViewDataSource` methods to be called
}
}
task.resume()