2015-10-29 26 views
0


我正在使用NSURL向Web服務器提交MySQL查詢以存儲我的應用程序的數據。問題是,即使對於簡單的5字回覆,該請求也需要大約15秒。我儘可能簡化了我的代碼,但我認爲它沒有加速。
代碼:
NSURL需要很長時間才能返回URL的內容。有沒有辦法加快速度?

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

你有問題的範圍縮小到張貼代碼將是巨大的或服務器的響應時間? – rmaddy

+0

找出如何使用終端上的'curl'進行相同的呼叫,並查看在Mac上需要多長時間。如果相同,它的網絡或服務器,如果在你的應用程序中出現了更快的錯誤。 –

回答

3

你是網絡。你沒有改變網絡。生活就是這樣。你不應該在乎需要多長時間。只要網絡通信結束,您的回調方法就會被異步回調。從現在開始可能需要十分鐘(可能不會,因爲在此之前可能會有一個超時)。這是你的工作,以這樣的方式進行編碼,使得無限的時間流逝是可以的。

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() 
} 
+0

閃電。快速。你是我的神 –

+0

這幾乎是瞬間 –

+0

那麼你可以把它標記爲正確答案:) – Lukas

相關問題