我正在使用NSURL将MySQL查询提交到Web服务器以存储我的应用程序的数据。问题是,即使简单的5个字回复,请求大约需要15秒。我尽可能简化了我的代码,但我认为它根本没有加速。
代码:
import UIKit
import Foundation
class ViewController: UIViewController {
@IBOutlet weak var testLabel: UILabel!
@IBAction func testButton(sender: UIButton) {
let myUrl = NSURL(string: "http://www.casacorazon.org/ios.html")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
self.testLabel.text = "\(responseString!)"
if error != nil {
print("Error: \(error)")
}
}
task.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
如果您知道一种方法可以使代码运行得更快,或者缩短15秒,我很乐意知道。
谢谢,
尼克
答案 0 :(得分:3)
你是网络。你不是在改变网络。这就是生活的方式。你不应该关心它需要多长时间。只要网络通信完成,您的回调方法就会异步回调。从现在开始可能是十分钟(好吧,也许不是,因为之前可能会有超时)。你的工作是以不确定的时间流逝为止进行编码。
答案 1 :(得分:2)
在优先级排队的队列中运行回调可能会有所帮助。尝试这一点,如果你评论它是否有所作为,那将是很好的,如果不是,我会删除答案,让自己避免更多的尴尬:)
@IBAction func testButton(sender: UIButton) {
let myUrl = NSURL(string: "http://www.casacorazon.org/ios.html")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
dispatch_async(dispatch_get_main_queue()) {
self.testLabel.text = "\(responseString!)"
}
}
}
task.resume()
}