2016-04-27 70 views
-4

我有一個iOS和Webservice的小項目,我試圖從webservice加載數據時打開此應用程序。所以當數據加載時,UIthread將會是「PAUSE」...那麼我怎麼能像Android中的AsyncTask那樣在背景中做到這一點?在後臺做Swift

self.conectDataNew.DemoSVNew("Movie", field: "IDMovie,Image,NameViet,Point", condition: "Year|DESC,Limit|7,IDState|2", request: "") { (stringData) in 
     let dataArray = stringData.componentsSeparatedByString("|") 
     let decodedData = NSData(base64EncodedString: dataArray[2], options: NSDataBase64DecodingOptions(rawValue: 0)) 
     let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 
     let dataArr = decodedString!.componentsSeparatedByString("<row>") 
     for i in 0...dataArr.count-1 { 
      let menu = dataArr[i].componentsSeparatedByString("|") 
      let url:NSURL = NSURL(string: menu[1])! 
      let dt :NSData = NSData(contentsOfURL: url)! 
      self.idNew.append(menu[0]) 
      self.posterNew.append(dt) 
      self.namesNew.append(menu[2]) 
      self.scoreNew.append(menu[3]) 

     } 
     self.clvNew?.reloadData() 
    } 
+1

你試過谷歌搜索'迅速異步'?作爲第一個結果,產生https://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1! – luk2302

+0

dispatch_async(dispatch_get_global_queue(INT(QOS_CLASS_USER_INITIATED.value),0)){// 1 讓窗格在overlayImage = self.faceOverlayImageFromImage(self.image) dispatch_async(dispatch_get_main_queue()){// 2 self.fadeInNewImage(窗格在overlayImage)//3 } } 是這種方法嗎?背景在哪裏? –

+2

**閱讀教程**,沒什麼可說的。 – luk2302

回答

0

你能做的最好的辦法是Alamofire

Alamofire是寫在斯威夫特的HTTP網絡庫來實現您的項目。 Alamofire中的聯網是異步完成的。這是一個例子:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]) 
     .responseData { response in 
      print(response.request) 
      print(response.response) 
      print(response.result) 
      } 

P.S.看看這個官方文檔部分"Response serialization"瞭解什麼類型的響應,你可以處理(字符串,JSON,數據,..)

+0

謝謝你的anser,但我不使用json :( –