我是 iOS 编程的新手,正在尝试创建我的第一个应用程序。我正在使用
从服务器获取一些数据 var task = NSURLSession.sharedSession().dataTaskWithRequest(request,
completionHandler: { (data, response, error) -> Void in
据我了解,completionHandler 闭包中的所有代码都是在任务完成时执行的。在我的 ViewController 中,我想检查此任务是否已完成,并且在完成之前不加载表。如何检查此任务是否已完成?
我想我可以让 completionHandler 在它运行时将一些全局 bool 变量设置为 true,我可以在我的 ViewController 中检查这个变量,但我觉得有一个更好的方法来使用内置功能,我只是不知道。
最佳答案
View Controller 不需要知道 completionHandler
何时被调用。您所做的就是让 completionHandler
实际上将 tableView.reload()
分派(dispatch)回主队列(然后触发调用 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()
关于ios - 如何检查 dataTaskWithRequest 是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665874/