[英]HTTPsendRequest is very slow
在这段代码中,我从网站上获取了一个字符串,并将其显示在标签上。 在标签上显示字符串真的很慢! 大约10秒。 但是,在控制台上打印字符串时,println(日期)是立即的。 我怎样才能解决这个问题?
func HTTPsendRequest(request: NSMutableURLRequest,
callback: (String, String?) -> Void) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) -> Void in
if (error != nil) {
callback("", error.localizedDescription)
} else {
callback(NSString(data: data,encoding: NSUTF8StringEncoding)!, nil)
}
}
task.resume()
}
func HTTPGet(url: String, callback: (String, String?) -> Void) {
var request = NSMutableURLRequest(URL: NSURL(string: url)!)
HTTPsendRequest(request, callback) }
@IBAction func myButton(sender: AnyObject) {
HTTPGet("http://www.mywebsite.com/test.txt") { (data: String, error: String?) -> Void in
if (error != nil) {
self.myLabel.text=error
println(error)
} else {
self.myLabel.text=data
println(data)
}
}
}
NSURLSession
完成块不在主队列上运行。 但是,您必须在主线程上运行UI更新,因此您应该在其中分配callback
,例如:
func HTTPsendRequest(request: NSMutableURLRequest, callback: (String, String?) -> Void) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) -> Void in
dispatch_async(dispatch_get_main_queue()) {
if (error != nil) {
callback("", error.localizedDescription)
} else {
callback(NSString(data: data,encoding: NSUTF8StringEncoding)!, nil)
}
}
}
task.resume()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.