Я хочу проверить, есть ли пользователь с выбранным именем пользователя в 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
является метод асинхронной и поэтому я не могу использовать стратегию вы можете увидеть выше. Но я не могу вернуть значение из метода Firebase, потому что это метод void ...
Как я могу решить эту проблему?
Еще одна вещь. Как я могу вернуть false также, если есть ошибка подключения или нет соединения с сервером?
Извините, если я сделал некоторые ошибки с язык, я итальянский студент – ale00