如何检查dataTaskWithRequest是否完整?

时间:2015-02-23 01:55:16

标签: ios swift closures nsurlsession

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

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

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

我知道completeHandler闭包中的所有代码都在任务完成时执行。从我的ViewController,我想检查这个任务是否已经完成,并且没有加载表,直到它有。如何检查此任务是否已完成?

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

1 个答案:

答案 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()