2016-08-27 32 views
2

我創建了一個按鈕,當它被點擊時,我的應用程序開始下載存儲在數組中的json數據庫。如何設置時間限制下載數據(來自json數據庫)Swift 2

當我開始下載數據庫時,有時互聯網非常慢,設備無法下載內容,即使用戶沒有獲得所需的數據,用戶仍然可以使用該應用程序。

我想要的是一個計時器或計數器,當請求時間超過1分鐘時提醒用戶,並顯示消息「無法連接互聯網」或「下載數據庫速度太慢」。

我想你給我至少一個想法,因爲我甚至不知道去搜一下:(

謝謝

UPDATE:這是我一直的代碼走到這一步。

覆蓋FUNC viewDidLoad中(){ super.viewDidLoad()

let url = NSURL(string: "http://146.83.128.64/tongoy/g.php?&sala=-1&curso=-1&profesor=-1&semestre=-1&semestrec=-1&carrera=-1&area=-1")! 

    let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in 

     if let urlContent = data { 

      do { 

       let jsonResult = try NSJSONSerialization.JSONObjectWithData(urlContent, options: NSJSONReadingOptions.MutableContainers) 

       for json in jsonResult as! Array<AnyObject> { 

        if let area = json["area"] as? String { 
         self.arregloArea.append(area) 
        } 
        if let id = json["id"] as? Int { 
         self.arregloID.append(id) 
        } 
        if let curso = json["curso"] as? String { 
         self.arregloCursos.append(curso) 
        } 

        if let carreras = json["carreras"] as? Array<AnyObject> { 
         for item in carreras { 
          if let id = item["id"] as? Int { 
           print(id) 
          } 
          if let nombre = item["nombre"] as? String { 
           print(nombre) 
          } 
          if let semestre = item["semestre"] as? Int { 
           print(semestre) 
          } 
          if let curso = item["curso"] as? Int { 
           print(curso) 
          } 
         } 
        } 
       } 
      } catch { 
       print("JSON serialization failed") 
      } 

      dump(arregloCursos) 
      dump(arregloArea) 
      dump(arregloID) 

     } 
    } 
    task.resume() 
} 
+0

你是如何下載數據的?您可能會使用一個超時屬性。 –

+0

'NSURLSession'是廣泛定製的。 – vadian

+0

顯示您的代碼。你如何下載你的數據?你應該使用URLSession。您還可以確保設備使用可達性連接到WiFi網絡 –

回答

0
let request = NSMutableURLRequest(URL: url!, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 5.0) 

這會將您的JSON數據庫的URL設置爲變量url,然後以5.0秒的超時間隔請求它,您可以根據需要進行調整以適應您的需求!祝你好運

UPDATE:

let url = NSURL(string: "http://146.83.128.64/tongoy/g.php?&sala=-1&curso=-1&profesor=-1&semestre=-1&semestrec=-1&carrera=-1&area=-1")! 

let request = NSMutableURLRequest(URL: url) 
let taskConfiguration =  NSURLSessionConfiguration.defaultSessionConfiguration() 
taskConfiguration.timeoutIntervalForRequest = 10 
taskConfiguration.timeoutIntervalForResource = 10 
self.session = NSURLSession(configuration: taskConfiguration, delegate: self.delegates, delegateQueue: nil) 


let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
     let json:JSON = JSON(data: data!) 
     onCompletion(json, error) 
    }) 

注:

現在你已經超時,你將不得不處理,如果您沒有收到回數據/超時。因此,請檢查您的數據是否爲零,或者您的偏好是什麼,並且做一些事情以避免崩潰。

摘要:

基本上你創建你自己的NSURLSessionConfiguration,然後根據您應用的配置開始您的會話。

+0

嗯,我剛更新了我的問題,現在已經有了,你會在我的代碼中寫下那些內容?感謝您的反饋:) –

+0

我更新了我的答案,這應該適合您的需求! –

相關問題