繁体   English   中英

HTTPsendRequest非常慢

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM