Ich versuche, den Benutzer meiner App zu überprüfen, wenn sie die App öffnen. Ich habe einen Begrüßungsbildschirm, der einen Post der Benutzer-E-Mail an den Server sendet und basierend auf der Antwort vom Server wird entweder die Home-Ansicht oder eine E-Mail-Verifizierungsseite geladen.Wie man einen Beitrag zu einem Server macht, auf die Antwort wartet und dann die Ansicht basierend auf der Antwort in Swift ändert?
Das Problem, das ich bekomme, ist, dass, wenn ich den Beitrag mache es scheint es auf einen eigenen Thread, und ich sehe nicht die Antwort, bis die Ansicht bereits geändert und die App hat sich beruhigt.
Ich habe zu verwenden versucht:
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
und
let task = session.dataTaskWithRequest(request)
{
//more stuff to handle return
}
task.resume()
und auch
NSURLConnection.sendSynchronousRequest()
Das Problem mit der ersten und der dritten Option ist, dass sie veralteten Methoden sind, in Zusätzlich dazu arbeiten sie an ihrem eigenen Thread und erhalten die Antwort nach der if-Anweisung, die die Ansicht ändert schon gelaufen.
Dies ist ein Ausschnitt des Codes verwendet:
//returns the email of the user
let email = self.fileCom.getUserStringField("email")
//write the string to post to the server
let post = "email=" + email +
"&pass=" + self.serverCom.PASSWORD
//post the user email to verification script and log result
logResponse(self.serverCom.postToServer(self.serverCom.getVerifyEmailScriptURL(), bodyData: post))
//Check the status of verified and email
// if(self.fileCom.getUserBoolField("verified"))
if(false)//temp
{
//change view to home view
print("\nHomeView\n")
showHomeView()
}
else
{
//change view to verification view
print("\nVerifyView\n")
showVerificationView()
}
Die if-Anweisung wird die Ansicht ändern auf der gespeicherten Antwort vom Server an die Benutzer-Datei im Ordner Dokumente basieren.
Sie haben den Blick in den Abschluss-Handler für das Netzanruf zu zeigen. –