2015-02-06 72 views
2

後更新視圖我送一些POST請求我斷絕與快捷,通常慢:迅速處於REST POST請求

let request = NSMutableURLRequest(URL: url) 
request.HTTPMethod = "POST" 
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
     data, response, error in 

     if error != nil { 
      println("error=\(error)") 
      return 
     } 

     let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) 

     println(responseString) //this is fast 
     label.text = "\(responseString)" // this is very slow 
} 
task.resume() 

這種運作良好,我得到的數據和所有。現在有兩件事情表現得非常不同,我不知道爲什麼。

該行:println(responseString)按預期立即打印數據,但行label.text = "\(responseString)"需要大約10秒鐘來更新標籤的文本。

任何想法爲什麼? DrawRect與此有什麼關係?

回答

8

嘗試做這樣的主線程:

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     label.text = "\(responseString)" 
    }) 
+1

哈!完美,這工作!非常感謝你:) – matt 2015-02-06 15:49:04

+2

沒問題!每當你在後臺線程上進行計算,網絡請求等,然後更新UI,總是在主線程上這樣做。 – 2015-02-06 15:51:26

+0

我會做的,感謝 – matt 2015-02-06 15:52:57