Wierzę, że mam problem, w którym moje zamknięcie dzieje się w wątku tła i mój UITableView nie aktualizuje się wystarczająco szybko. Dzwonię do usługi REST iw moim zamknięciu mam wywołanie tableView.reloadData()
, ale to zajmie kilka sekund. Jak wykonać dane przeładować szybciejSwift UITableView reloadData w zamknięciu
REST Query Function (być może w głównym wątku?) - za pomocą SwiftyJSON bibliotekę do dekodowania
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()
})
}
Po self.tableView.reloadData()
nazywa w moim debugera
Prawidłowy kod powinien być: dispatch_async (dispatch_get_main_queue(), {self.tableView.reloadData()}) – Jeef
Przepraszam za to, naprawiony. – Kirsteins
Czy nie powinniśmy używać [słabego ja] zamiast siebie, aby uniknąć cykli zachowania? –