2016-04-27 18 views
-4

Ich habe ein kleines Projekt mit iOS und Webservice, ich habe versucht, Daten vom Webservice zu laden, wenn diese App geöffnet wird. Wenn also Daten geladen werden, wird UIthread "PAUSE" sein ... Also, wie kann ich das im Hintergrund machen wie AsyncTask in Android?Do im Hintergrund 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

Haben Sie versucht googlen 'swift asynchronous'? Was als erstes Ergebnis https://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1 ergibt! – luk2302

+0

dispatch_async (dispatch_get_global_queue (Int (QOS_CLASS_USER_INITIATED.value), 0)) {// 1 lassen overlayImage = self.faceOverlayImageFromImage (self.image) dispatch_async (dispatch_get_main_queue()) {// 2 self.fadeInNewImage (overlayImage)// 3 } } ist diese Methode? Wo ist das im Hintergrund? –

+2

** Lesen Sie das Tutorial **, nichts mehr zu sagen. – luk2302

Antwort

0

Der beste Weg ist, die Sie tun können Ihr Projekt mit Alamofire

Alamofire ist eine HTTP-Networking-Bibliothek in Swift geschrieben zu implementieren. Die Vernetzung in Alamofire erfolgt asynchron. Dies ist ein Beispiel:

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

P.S. Schauen Sie auch diesen offiziellen Dokumentabschnitt "Response serialization" um zu verstehen, welche Art von Antwort Sie behandeln können (Zeichenfolge, JSON, Daten, ..)

+0

danke für deine anser aber ich benutze json nicht :( –