完成处理程序调用太迟了

时间:2015-02-11 16:05:25

标签: ios json uitableview swift completionhandler

我正在尝试使用UITableView调用获取的数据填充DataTaskWithURL。但是, tableview 已在完成处理程序启动之前加载。

我搜索了这个问题并找到了将它移动到主线程的事情,但这似乎没有用。有关如何在tableview加载之前将其移动到正确的que的任何想法?

我的代码:

    var jsonData: JSON = []

func getRequestForTableView() {

    let urlPath = "[URL]"
    let url: NSURL = NSURL(string: urlPath)!
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in

        let json = JSON(data: data)

        println(json.count)
        self.jsonData = json
    })
    task.resume()
}

1 个答案:

答案 0 :(得分:1)

需要先检查响应代码和您的数据。响应代码如200.如果您正在寻找的东西,您需要在确认回复后在块中重新加载TableView。

确保在TableView中正确解释数据。

重新加载TableView // Swift

dispatch_async(dispatch_get_main_queue(), { () -> Void in
    self.tableView.reloadData()
})

响应代码// iOS

if ([response statusCode] == 200) {
           //reload table here             
}