Я пытаюсь внедрить систему регистрации пользователей и мне нужно знать, был ли идентификатор пользователя (сгенерированный случайным образом) уже назначен другому пользователю или нет. Для этого я подключаю свою базу данных Firebase и использую метод observer()
, чтобы проверить доступность сгенерированного идентификатора.
Однако, поскольку запрос к базе данных Firebase выполняется асинхронно, и я могу узнать результат только после возврата запроса, я не могу использовать правильное возвращаемое значение из вызывающего метода.
Мой подход здесь
repeat {
id = generateUniqueId()
check availability
} while (id is not unique)
У меня есть реализация
var id:String
var test = true
repeat {
id = generateId()
ref.child("\(databaseReferenceName)").observe(.value) { (snapshot) in
test = snapshot.hasChild("\(id)")
}
} while (test == true)
Этот цикл продолжает работать, даже если для переменной test
установлено значение false
с помощью метода hasChild()
.
Как я могу изменить код, чтобы я мог получить правильное значение переменной test
?
Я использую Swift 4.1
Спасибо