2016-04-27 71 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 :( –