I got a small problem, let me start with the code
class ViewController: UIViewController {
@IBOutlet weak var LBoutput: UILabel!
@IBAction func BTclick(sender: AnyObject) {
var url = NSURL(string: "http://google.com")
println("test0")
let getdata = NSURLSession.sharedSession().dataTaskWithURL(url){(data ,response , error) in
var htmlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
println("test1")
println("test2")
self.LBoutput.text = "test6"
}
println("test3")
getdata.resume()
println("test4")
LBoutput.text = "test5"
}
This codes give me a output in the console of
test0
test3
test4
test1
test2
Also the label updates to "test5" with no time, but the label to update to "test6" takes like 30sec.
I have no clue why this takes so long, anyone a idea?
Usual problem of updating UI in a secondary thread:
Your closure is obviously not running on the main thread, as the URL task is asynchronous. So updating the label on the closure will have to wait for the main thread to run its update loop. The way to fix it is to wrap the .text =
call to force it to run on the main thread (which is where the UI stuff should run anyway):
dispatch_async(dispatch_get_main_queue()) {
self.LBoutput.text = "test6"
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With