ログイン画面からユーザーをサインインさせるロジックがいくつかあります。ログインに失敗した場合、ユーザーに知らせるメッセージを表示したい。ユーザーが正常にログインすると、セグエがトリガーされます。無効な資格情報でテストすると、エラー アラートは期待どおりに表示されますが、if-else ステートメントにネストされているにもかかわらず、セグエがまだトリガーされています。どうしてこれなの?どうすればそれから戻ってelseブロックを回避できますか...? DispatchQ/show アラート コードの下に「return」を追加しようとしましたが、何の効果もありませんでした。
self.login(username: usernameTextField.text!, password: passwordTextField.text!) { (error) in
if error != nil {
DispatchQueue.main.async {
self.showAlert(msg: error ?? "error")
}
} else {
DispatchQueue.main.async {
// segue code
}
}
}
ログインする:
func login(username: String, password: String, completionHandler: @escaping (_ error: String?) -> ()) {
SessionHelper.shared.logUserIn(withUsername: username, andPassword: password) { (error) in
if let err = error {
completionHandler(err)
}
completionHandler(nil)
}
}