gpt4 book ai didi

ios - 闭包中的 Swift UITableView reloadData

转载 作者:IT王子 更新时间:2023-10-29 05:04:40 26 4
gpt4 key购买 nike

我认为我遇到了一个问题,我的关闭发生在后台线程上,而我的 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()


})
}

一旦在我的调试器中调用了 self.tableView.reloadData()

最佳答案

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

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

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

DispatchQueue.main.async {
self.tableView.reloadData()
}

关于ios - 闭包中的 Swift UITableView reloadData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26277371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com