/ / Właściwy sposób tworzenia żądania asynchronicznego w Swift 2.0 - ios, swift, asynchroniczny, httpquest, swift2

Właściwy sposób tworzenia żądania asynchronicznego w Swift 2.0 - ios, swift, asynchroniczny, httpquest, swift2

Uczę się powoli i głównie przez szukanie w nich problemów podczas ich napotykania.

Z badań online znalazłem jedną zasadę:

**

Nigdy nie twórz synchronicznych żądań i zawsze wysyłaj asynchroniczne żądania

**

Ale jest tak wiele różnych sposobówskładanie wniosków przez Internet jest mylące, aby ustalić, który z nich jest właściwy. A ponieważ Apple niedawno wypuściło Swift 2 kilka z tych metod stało się przestarzałych. Co oznacza, że ​​większość przykładów lub odpowiedzi w sieci również stały się przestarzałe.

Obecnie używam poniższego kodu do wysyłania żądań. Nie wiem, czy to jest poprawny sposób złożenia wniosku, czy jest to Asynchroniczne.

  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()

Moje pytania do tego posta są następujące:

  1. Dlaczego żądanie asynchroniczne jest lepsze?
  2. Jakie są kroki związane z tworzeniem żądania asynchronicznego w Swift 2?

Jeśli możesz podać przykładowy kod, który byłby bardzo pomocny.

P.s ( Zamieszczam tutaj po wyszukiwaniu godzin na stronienet i przeczytałem sporo postów na przepełnieniu stosu, więc pokornie prosiłam, aby nie zamieszczać linków do innych postów przepełnienia stosu jako odpowiedzi, publikuj je jako komentarze )

Dziękuję Ci.

Odpowiedzi:

5 dla odpowiedzi № 1

Dlaczego żądanie asynchroniczne jest lepsze?

Nie blokuje interfejsu podczas (prawdopodobniebardzo czasochłonne) żądanie i odpowiedź odbywa się przez sieć. Blokowanie interfejsu jest złe, a system zabije twoją aplikację martwą tuż przed oczami użytkownika, jeśli robi to zbyt długo.

Jakie są kroki związane z tworzeniem żądania asynchronicznego w Swift 2?

Użyj NSURLSession. To wywołanie w twoim kodzie jest asynchroniczne, ponieważ używasz 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)
})