firebase fetchProvidersForEmailを取得して、完了クロージャの外にブール値を設定しようとしていますが、要求が非同期であるためにどうしたらよいか分かりません。これは私が持っているものです。Firebaseが非同期呼び出しからブール値を返す
FIRAuth.auth()?.fetchProvidersForEmail(emailSignUpTextField.text!, completion:{(providers, error) in
if error != nil{
print(error)
if error!.code == FIRAuthErrorCode.ErrorCodeInvalidEmail.rawValue{
self.showErrorAlert("Invalid Email", msg: "Please input a valid email.")
}
}
else{
//If there are no errors and there are providers, the email exists
if providers != nil{
self.showErrorAlert("Email in Use", msg: "There is already an account created with that email.")
}
//The email does not exist
else{
self.segueBool = true
print("it works")
}
}
})
self.segueBoolは、私はエラーがない場合にtrueに設定するために必要なものです。どんな助けもありがとう。
このコードを別のスレッドで実行していますか?そうでない場合、完了ブロックは完了時に結果をキャッチする必要があります。この場合、非同期であるかどうかは関係ありません。もしあなたが望む結果を明示的にチェックするために 'if providers!= nil'の後にelse文を編集する必要があるかもしれません。 – cdslijngard
あなたの問題は何ですか?このリクエストを同期して実行したいですか? – kelin
はいこれは同期的に動作するようにしたいと思います。 – Pikachu