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

时间:2017-07-12 19:36:47

标签: swift

我正在尝试执行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车?

1 个答案:

答案 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是同步的。如果它是异步的,那么您需要重新考虑整个方法。