Swift UITableView reloadData 在闭包中

2023-12-28

我相信我遇到了一个问题,我的关闭发生在后台线程上,并且我的 UITableView 更新得不够快。我正在打电话给 REST 服务,在我的关闭中我有一个tableView.reloadData()打电话,但这需要几秒钟的时间才能发生。如何使数据重新加载更快(也许在主线程上?)

REST 查询功能 - 使用 SwiftyJSON 库进行解码

func asyncFlightsQuery() {
    var url : String = "http://127.0.0.1:5000/flights"
    var request : NSMutableURLRequest = NSMutableURLRequest()
    request.URL = NSURL(string: url)
    request.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, networkData: NSData!, error: NSError!) -> Void in
        var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil


        // Parse with SwiftyJSON
        let json = JSON(data: networkData)

        // Empty out Results array
        self.resultArray = []

        // Populate Results Array
        for (key: String, subJson: JSON) in json["flights"] {
            print ("KEY: \(key) ")
            print (subJson["flightId"])
            print ("\n")

            self.resultArray.append(subJson)
        }

        print ("Calling reloadData on table..??")
        self.tableView.reloadData()


    })
}

Once self.tableView.reloadData()在我的调试器中调用


UIKit 不是线程安全的。 UI 应该只从主线程更新:

dispatch_async(dispatch_get_main_queue()) {
    self.tableView.reloadData()
}

Update。在 Swift 3 及更高版本中使用:

DispatchQueue.main.async {
    self.tableView.reloadData()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift UITableView reloadData 在闭包中 的相关文章

随机推荐