如何检查 dataTaskWithRequest 是否完成?

How do I check if dataTaskWithRequest is complete?

我是 iOS 编程新手,正在尝试创建我的第一个应用程序。我正在使用

从服务器获取一些数据
  var task = NSURLSession.sharedSession().dataTaskWithRequest(request,

        completionHandler: { (data, response, error) -> Void in

我了解到 completionHandler 闭包中的所有代码都是在任务完成时执行的。从我的 ViewController,我想检查这个任务是否已经完成,并且在完成之前不加载 table。如何查看此任务是否已完成?

我想我可以让 completionHandler 在它运行时将一些全局布尔变量设置为 true,我可以在我的 ViewController 中检查这个变量,但我觉得有更好的方法来做到这一点内置功能,我只是不知道。

视图控制器不需要知道何时调用 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()