J'utilise une API de repos pour me connecter J'envoie simplement une demande avec l'adresse e-mail et le mot de passe de l'utilisateur. Si elles correspondent dans la base de données, je retourne un peu Json et swift l'analyse. Cette partie fonctionne correctement ce que j'essaie de faire maintenant est de comprendre comment je peux alerter un utilisateur si l'email et le mot de passe ne correspondent pas. Jusqu'à présent, je suis arrivé ceIOS Swift Comment puis-je retourner la réponse de l'étiquette plus rapidement?
@IBAction func Login_Action(_ sender: Any) {
var check = 0
let url:URL = URL(string:ConnectionString+"login")!
let Email = email.text!
let Password = password.text!
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let parameter = "email=\(Email)&password=\(Password)"
request.httpBody = parameter.data(using: String.Encoding.utf8)
session.dataTask(with:request, completionHandler: {(data, response, error) in
if error != nil {
// print(error)
} else {
do {
// if the call is successful then it goes through here otherwise it skips it
check = 1
let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:Any]
}
DispatchQueue.main.async {
// send them to member page
let next = self.storyboard?.instantiateViewController(withIdentifier: "NextView")
self.present(next, animated: true, completion: nil)
}
}
} catch let error as NSError {
print(error)
if check == 0 {
self.error.isHidden = false
self.error.text = "Incorrect email and/or password"
}
}
}
// If the call is unsuccessful then show message
return
}).resume()
/*
print(check)
if check == 0 {
self.error.isHidden = false
self.error.text = "Incorrect email and/or password"
print("incorrect")
}*/
}
J'utilise la variable de contrôle comme le drapeau, il est par défaut est 0. Ce qui signifie que la combinaison e-mail/mot de passe ne fonctionne pas et si la combinaison e-mail/mot de passe fonctionne, je la mets à 1. Le problème est qu'il faut environ 5 ou 7 secondes pour afficher le message incorrect e-mail et/ou mot de passe si l'utilisateur a fourni les informations d'identification incorrectes. Lorsque je vérifie le temps de réponse d'un appel, il revient immédiatement, mais il faut environ 7 secondes pour que l'étiquette s'affiche. Si je mets cette même logique en dehors de la .resume alors il apparaît instantanément mais le message est toujours incorrect email et mot de passe si le chèque ou non est 0 ou 1 des suggestions serait mieux
Hey Rome, pls améliorer votre formatage du code - il est très difficile de le lire tel quel, merci! Aussi: gardez à l'esprit que 'guard' est votre ami :-) –
Vous devez montrer les informations sur les détails de connexion incorrects * à l'intérieur de la fermeture *, tout comme vous le faites avec la présentation de la scène suivante. N'oubliez pas d'envoyer la mise à jour de l'interface utilisateur dans la file d'attente principale. – Paulw11
Merci Paulo et oh ok Paulw le fera maintenant –