尝试从函数内部的 firebase querysnaphsot 完成处理程序中获取 return 值
Trying to return value from firebase querysnaphsot completion handler inside function
我正在尝试 return 从异步代码块(从我的完成处理程序)为我的函数 validateFields()
生成的值,但我不确定如何做到这一点。
func validateFields() -> Bool
{
//Other else if statements
//...
else if !(usernameTextField.text!.isEmpty)
{
var retVal = false
isUnique { (bool) in
retVal = bool
}
print("THIS IS THE RET VALUE: " + String(retVal))
//this print statement does not return the correct value
if retVal == false { return retVal }
}
errorLabel.text = " "
return true
}
如您所见,它不起作用,我需要在 isUnique
中 return bool
来实现我的整个功能。
您不能存储 isUnique
的关闭结果然后立即 return 它,因为 isUnique
将花费完成任何任务所需的时间。
你想要类似下面的东西,其中 completion
在 所有 路径上被调用,但只调用一次:
func validateFields(completion: (Bool) -> Void) {
//Other else if statements
//...
if ... {
/* ... */
} else if !(usernameTextField.text!.isEmpty) {
var retVal = false
isUnique { (bool) in
print("THIS IS THE RET VALUE: " + String(bool))
completion(bool)
}
} else {
errorLabel.text = " "
completion(true)
}
}
来电者:
validateFields { result in
print("result: \(result)")
}
我正在尝试 return 从异步代码块(从我的完成处理程序)为我的函数 validateFields()
生成的值,但我不确定如何做到这一点。
func validateFields() -> Bool
{
//Other else if statements
//...
else if !(usernameTextField.text!.isEmpty)
{
var retVal = false
isUnique { (bool) in
retVal = bool
}
print("THIS IS THE RET VALUE: " + String(retVal))
//this print statement does not return the correct value
if retVal == false { return retVal }
}
errorLabel.text = " "
return true
}
如您所见,它不起作用,我需要在 isUnique
中 return bool
来实现我的整个功能。
您不能存储 isUnique
的关闭结果然后立即 return 它,因为 isUnique
将花费完成任何任务所需的时间。
你想要类似下面的东西,其中 completion
在 所有 路径上被调用,但只调用一次:
func validateFields(completion: (Bool) -> Void) {
//Other else if statements
//...
if ... {
/* ... */
} else if !(usernameTextField.text!.isEmpty) {
var retVal = false
isUnique { (bool) in
print("THIS IS THE RET VALUE: " + String(bool))
completion(bool)
}
} else {
errorLabel.text = " "
completion(true)
}
}
来电者:
validateFields { result in
print("result: \(result)")
}