2014-09-20 22 views
0

当我用NSURLSession检索数据并想在服务器中有数据可用后更新我的视图时,更新视图的时间约为15秒。为什么有延迟更新我的UIView

var url = NSURL.URLWithString("http://example.com/app/api.php") 
var session = NSURLSession.sharedSession() 
var dataTask = session.dataTaskWithURL(url, completionHandler: {(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in 
    println(NSString(data: data, encoding: NSUTF8StringEncoding)) 
    self.myLabel.text = "completion" 
    self.view.setNeedsDisplay() 
    return}) 
dataTask.resume() 

附加说明:如果我调用setNeedsDisplay,则无关紧要。

任何建议我的代码有什么问题或如何避免这种延迟?

+0

哪些数据是要显示?请在您的代码中提供一些评论。它是标签中的文字吗? – bdv 2014-09-20 19:30:44

+0

不,这不是标签中的文字。来自服务器的数据响应完美(println)。我的目标是在响应可用时立即更改标签文本以通知用户。 – 2014-09-20 19:32:47

+0

你试过创建一个队列并更新你的UI元素吗? – bdv 2014-09-20 19:37:48

回答

0

感谢rdelmar谁把我在正确的方向,这里是我纠正代码:

var url = NSURL.URLWithString("http://www.connected-media.de/app/api.php") 

var sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration() 

var URLSession = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: NSOperationQueue.mainQueue()) 

var dataTask = URLSession.dataTaskWithURL(url, completionHandler: {(data: NSData!, response:  NSURLResponse!, error: NSError!) -> Void in 
println(NSString(data: data, encoding: NSUTF8StringEncoding)) 
self.myLabel.text = "completion" 
return})   

dataTask.resume()