Xcode 期待布尔函数中的 Void 并抛出错误



我正在尝试执行shouldPerformSegue功能,但是出现错误:

无效函数中意外的非 void 返回值

为什么我会收到这样的错误?该函数在任何方面都不是 Void,应该期望布尔值作为返回类型。

override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool {
if let phoneNumber = phoneNumberTextField.text{
if let ident = identifier{
if ident == "pincode"{
API.sendVerificationCode(phoneNumber: phoneNumber){ (error, success) in
if error != nil{
return false // error is here
}
}
}
}
}
return true
}

我该怎么办?我是愚蠢还是Xcode有问题?

这是因为您在闭包范围内返回,而不是在您的函数范围内。试试这个:

override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool {
var shouldPerform = true
if let phoneNumber = phoneNumberTextField.text{
if let ident = identifier{
if ident == "pincode"{
API.sendVerificationCode(phoneNumber: phoneNumber){ (error, success) in
if error != nil{
shouldPerform = false
}
}
}
}
}
return shouldPerform
}

这假设 API.sendVerificationCode 是同步的。如果它是异步的,那么您需要重新考虑整个方法。

相关内容

最新更新