Swift - dataTaskWithURL 获取数据后是否自动终止
Swift - Doesn't dataTaskWithURL terminated automatically after it gets the Data
我花了3天的时间才弄明白这个问题的原因。
我成功地使用下面的代码从服务器获取了我的数据。但是即使我可以 println() 完成处理程序中的数据,activity 指示器 stopAnimating() 或 label.text 赋值发生在 println 之后大约 20 秒。
我认为在我的数据到达后会话以某种方式保持活动状态。如果是这样,我该如何取消它。如果不是这样,我错过了什么???
let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url)) { data, response, error in
if(error == nil){
//This works in 1second
println("string coming from data")
//these happen around 20 mins after the above
self.loading.stopAnimating()
self.label.text = "string coming from data"
}
}
task.resume()
NSURLSession.sharedSession().dataTaskWithURL
在后台线程上执行。始终在主线程上更新 UI,如下所示:
dispatch_async(dispatch_get_main_queue()) {
self.loading.stopAnimating()
self.label.text = "string coming from data"
}
我花了3天的时间才弄明白这个问题的原因。
我成功地使用下面的代码从服务器获取了我的数据。但是即使我可以 println() 完成处理程序中的数据,activity 指示器 stopAnimating() 或 label.text 赋值发生在 println 之后大约 20 秒。
我认为在我的数据到达后会话以某种方式保持活动状态。如果是这样,我该如何取消它。如果不是这样,我错过了什么???
let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url)) { data, response, error in
if(error == nil){
//This works in 1second
println("string coming from data")
//these happen around 20 mins after the above
self.loading.stopAnimating()
self.label.text = "string coming from data"
}
}
task.resume()
NSURLSession.sharedSession().dataTaskWithURL
在后台线程上执行。始终在主线程上更新 UI,如下所示:
dispatch_async(dispatch_get_main_queue()) {
self.loading.stopAnimating()
self.label.text = "string coming from data"
}