Ich habe einen Endpunkt, der eine Telefonnummer einnimmt und einen Code an die Nummer sendet, aber diese Nachricht auch an den Datenabschnitt der Sitzung zurückgibt, die sie aufgerufen hat. All dies funktioniert, aber das Problem, das ich habe, ist, dass, nachdem die Sitzung den Anruf macht, bin ich zum nächsten Bildschirm segue und ich gebe diesen Code in den nächsten Controller. Aber ich denke, dass die API zu langsam reagiert, so dass der Code nach Ablauf der Zeit (und Vorbereitung für den Übergang) noch nicht zurückgegeben wurde. Wie kann ich das beheben?Anzeige Antwort von URLSession
0
A
Antwort
0
Das Problem ist, dass Sie self.performSegue(withIdentifier: "toVerifyCode", sender: (Any?).self)
nicht im Verschluss platziert haben.
Also, Sie haben es so zu platzieren:
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
//print(error?.localizedDescription)
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as AnyObject
//on main thread
DispatchQueue.main.async {
self.currentCode = json["code"]!! as! String //-> This is the code the is returned from the api call
self.performSegue(withIdentifier: "toVerifyCode", sender: (Any?).self)
}
}catch{
print("error with serializing JSON: \(error)")
}
}
task.resume()
Beachten Sie auch, dass Ihre Schließung asynchron ausgeführt wird, so wickelte ich den Anruf auf Haupt-Thread ausgeführt werden durch GCD verwendet wird.
+0
Vielen Dank! Das hat funktioniert –
+0
@CesaSalaam Sie sind herzlich willkommen. – Shmidt
Verwandte Themen
- 1. URLSession Antwort, wenn keine Internetverbindung
- 2. Anzeige korrekte Antwort Javascript
- 3. URLSession Fehler
- 4. URLSession & JSONSerialization Swift 3
- 5. Anzeige Soap-Antwort auf JSP
- 6. URLSession dataTask Timeout-Fehler
- 7. URLSession didCompleteWithError Kein Fehler
- 8. Node.js JSON von iOS URLSession body
- 9. URLSession didReceiveChallenge ist zu langsam
- 10. URLSession gibt leeres Array von HTTP GET Anfrage zurück
- 11. Debugging URLSession (in iOS 10)
- 12. Hochladen große Dateien über URLSession
- 13. URLSession funktioniert nicht mit URLCredential
- 14. Anzeige Antwort von API in Ruby on Rails App
- 15. Anzeige JSON-Antwort von Ajax als HTML oder Tabelle
- 16. Anzeige Ajax Antwort in div in ror
- 17. Anzeige der API-Antwort in HTML
- 18. URLSession Instanz Methode `downloadTask` Fehler
- 19. URLSession Trowing einer NSURLSession-Ausnahme
- 20. URLSession in Swift 3 - URLAuthenticationChallenge
- 21. URLSession wirft Konvertierungsfehler in Swift 3
- 22. Swift: Wie man eine URLSession deinitialisiert, wenn andere URLSession initialisiert wird?
- 23. Swift NSMutableURLRequest URLSession-Callback wird nicht aufgerufen
- 24. eine URLSession zu schnelle 3 Wurffehler aktualisiert
- 25. Swift 3: DispatchQueue Timing über URLSession
- 26. Swift 3 URLSession mit URLCredential funktioniert nicht
- 27. Cache-URL-Antwort für die Offline-Anzeige mit WKWebView
- 28. Symfony 2: Header-Anzeige in XML-Antwort verhindern
- 29. Anzeige JSON API-Antwort in HTML mit Winkel js
- 30. Wie werden Variablen in der URLSession-Datenaufgabe festgelegt?
Setzen Sie die 'performSegue (withIdentifier' Zeile ** in ** den Completion Block. – vadian
Also habe ich das versucht und das gleiche scheint immer noch zu passieren? –
Der Code soll funktionieren Wenn die Zeile rechts nach der 'self.currentCode = json [...' Zeile und natürlich entfernt werden nach 'resume()'. Btw: übergeben Sie einfach 'nil' als Absender und Sie brauchen keine' URLRequest' bei der Verwendung von 'GET'. – vadian