1

ログイン画面からユーザーをサインインさせるロジックがいくつかあります。ログインに失敗した場合、ユーザーに知らせるメッセージを表示したい。ユーザーが正常にログインすると、セグエがトリガーされます。無効な資格情報でテストすると、エラー アラートは期待どおりに表示されますが、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)
    }
}
4

2 に答える 2