/ / Modo corretto di effettuare una richiesta asincrona in Swift 2.0 - iOS, Swift, asincrono, httprequest, swift2

Modo corretto per creare una richiesta asincrona in Swift 2.0: ios, rapido, asincrono, httprequest, swift2

Sto imparando rapidamente e principalmente da google problemi mentre li incontro.

Dalla ricerca online ho trovato una regola:

**

Non effettuare mai richieste sincrone e fare sempre richieste asincrone

**

Ma ci sono molti modi diversi in cui le persone sonofare richieste online è confuso per capire quale sia quella corretta. E poiché Apple ha recentemente rilasciato Swift 2, alcuni dei metodi sono diventati obsoleti. Ciò significa che anche la maggior parte degli esempi o delle risposte in rete è diventata obsoleta.

Attualmente sto usando il codice qui sotto per fare richieste. Non so se questo è il modo corretto di fare una richiesta o se questo è asincrono.

  let request = NSMutableURLRequest(URL: NSURL(string: "www.domain.com")!)
let session = NSURLSession.sharedSession()

request.HTTPMethod = "GET"
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let _: NSError?

request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

let task = session.dataTaskWithRequest(request, completionHandler: {data, response, err -> Void in

UIApplication.sharedApplication().networkActivityIndicatorVisible = true

print("Response: (response)")
let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Body: (strData)")
do {
self.json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSArray
} catch {

}

})

task.resume()

Le mie domande per questo post sono le seguenti:

  1. Perché una richiesta asincrona è migliore?
  2. Quali sono i passaggi necessari per effettuare una richiesta asincrona in Swift 2?

Se riesci a fornire qualche codice di esempio che sarebbe molto utile.

P.s ( Sto postando qui dopo aver cercato ore sulnet e ho letto alcuni post su overflow dello stack, quindi chiedo umilmente di non pubblicare link ad altri post di overflow dello stack come risposta, pubblicarli come commenti )

Grazie.

risposte:

5 per risposta № 1

Perché una richiesta asincrona è migliore?

Non blocca l'interfaccia mentre il (possibilmentela richiesta e la risposta richiedono molto tempo) sulla rete. Il blocco dell'interfaccia è dannoso, inoltre il sistema ucciderà la tua app completamente sotto gli occhi dell'utente se lo fa per troppo tempo.

Quali sono i passaggi necessari per effettuare una richiesta asincrona in Swift 2?

Usa NSURLSession. Questa chiamata nel tuo codice è asincrona, perché stai usando NSURLSession:

let task = session.dataTaskWithRequest(request, completionHandler:{
data, response, err -> Void in
// this code runs asynchronously...
// ... i.e. later, after the request has completed (or failed)
})