Firebaseに選択されたユーザー名を持つユーザーが既に存在するかどうかをチェックしたいと思います。これを行う関数checkUsernameAlreadyTaken(username: String) -> Bool
を作成しました。Firebaseデータベースの非同期メソッドからの戻り値
func checkUsernameAlreadyTaken(username: String) -> Bool {
databaseRef.child("usernames").child("\(username)").observe(.value, with: { (snapshot) in
print(username)
if snapshot.exists() {
print("Snapshot exist")
self.alreadyTaken = true
}
})
if alreadyTaken == true {
print("Username already taken")
return false
}
else {
return true
}
}
問題は方法observe(_ eventType: FIRDataEventType, with block: (FIRDataSnapshot) -> Void) -> Uint
は非同期メソッドであるということですので、私はあなたが上記を参照できる戦略を使用することはできません。ここで は、コードが機能をPFです。しかし、私はFirebaseメソッドから値を返すことはできません。それはvoidメソッドなので...
この問題をどうやって解決できますか?
もう1つ。接続エラーまたはサーバーとの接続がない場合も、どうすればfalseを返すことができますか?
申し訳ありません言語、私はイタリア人学生です – ale00