我正在尝试执行shouldPerformSegue
功能但是我收到了错误:
void函数中出现意外的非void返回值
为什么我会收到这样的错误?该函数不以任何方式为Void,并且应该将boolean作为返回类型。
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车?
答案 0 :(得分:-1)
这是因为您在闭包范围内返回,而不是在您的函数范围内。试试这个:
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是同步的。如果它是异步的,那么您需要重新考虑整个方法。