Ios 条件函数不返回任何内容,语法是否正确?网间网操作系统

Ios 条件函数不返回任何内容,语法是否正确?网间网操作系统,ios,swift,parse-platform,Ios,Swift,Parse Platform,而不是写一个大的“if”语句,我想知道这个语法是否正确? 如果不遵守条件,我只使用return这个词 @IBAction func SignUpAction(sender: AnyObject) { if passwordField1.text != passwordField2.text { // password dont match // Pop error return } let user = PFUser()

而不是写一个大的“if”语句,我想知道这个语法是否正确? 如果不遵守条件,我只使用return这个词

@IBAction func SignUpAction(sender: AnyObject) {

    if passwordField1.text != passwordField2.text {
        // password dont match
        // Pop error
        return
    }

    let user = PFUser()
    user.username = emailField.text
    user.password = passwordField1.text

    user.signUpInBackgroundWithBlock { (suceeded: Bool, error: NSError?) -> Void in
        if error == nil {
            // Log the user
        }else{
            // Display an error
        }
    }
}
或者我需要这样写:

@IBAction func SignUpAction(sender: AnyObject) {

    if passwordField1.text == passwordField2.text {

        let user = PFUser()
        user.username = emailField.text
        user.password = passwordField1.text

        user.signUpInBackgroundWithBlock { (suceeded: Bool, error: NSError?) -> Void in
            if error == nil {
                // Log the user
            }else{
                // Display an error
            }
        }
    }else{
        // Error : password dont match
       // Pop error
    }
}
guard passwordField1.text == passwordField2.text else {
        print("pop error")
        return
    }
如果需要尝试许多条件,第一种语法会更清晰,但我不确定这样编写代码是否合适。谢谢

解决方案:(matt answer和Apple Doc在“guard”上: 第一条语句需要这样写:

@IBAction func SignUpAction(sender: AnyObject) {

    if passwordField1.text == passwordField2.text {

        let user = PFUser()
        user.username = emailField.text
        user.password = passwordField1.text

        user.signUpInBackgroundWithBlock { (suceeded: Bool, error: NSError?) -> Void in
            if error == nil {
                // Log the user
            }else{
                // Display an error
            }
        }
    }else{
        // Error : password dont match
       // Pop error
    }
}
guard passwordField1.text == passwordField2.text else {
        print("pop error")
        return
    }

实际上,我会使用第一种语法,表示为
guard
语句:

guard passwordField1.text == passwordField2.text else { return }
这正是
guard
的目的:如果不满足条件,就不要再进一步了。连续的多个
guard
语句(因为必须满足多个条件)是非常标准的