Я пытаюсь вернуть значение функции из внутри вложенной функции. Я понимаю, почему это не работает, но мне просто нужно знать обходное решение для моего типа проблем.Возвращаемое значение для функции во вложенной функции (Swift 3 | Xcode)
В моем коде я проверяю, был ли человек уже создан внутри моей базы данных Firebase. Таким образом, внутри функции usersRef вы увидите, что если значение return from firebase равно «nil», пользователь не был создан и наоборот.
Когда я говорю: return userBool
это дает мне эту ошибку:
Unexpected non-void return value in void function
искал чистый обходной путь, но единственное, что я могу вспомнить, чтобы создавать эту функцию снова и снова для каждого из в разные моменты я хочу проверить это. Очевидно, я бы предпочел не делать этого, ха-ха, поэтому, если бы вы могли помочь мне, предложив несколько советов о том, как исправить это и иметь чистое решение, дайте мне знать! :)
func checkIfUserExists(userID : String) -> Bool {
var userBool = Bool()
var usersRef = FIRDatabase.database().reference()
usersRef.child("users").child(userID).observeSingleEvent(of: .value, with: {
snapshot in
if snapshot.value != nil {
userBool = true
return userBool
}
else {
userBool = false
return userBool
}
})
}
UPDATE:
Благодаря вашим предложениям, я добавил к завершению, и она работала отлично. :)
func checkIfUserExists(userID : String, completion: @escaping (_ success: Bool) ->()){
var userBool = Bool()
var usersRef = FIRDatabase.database().reference()
usersRef.child("users").child(userID).observeSingleEvent(of: .value, with:{
snapshot in
if snapshot.value != nil {
print("userBool!", userBool)
userBool = true
}
else {
print("userBool2!", userBool)
userBool = false
}
completion(userBool)
})
}
Спасибо за предложение, я рассмотрю его. :) –
Работал отлично! Благодаря! –
Отлично! Я рад, что это помогло. :) –