Ios 条件函数不返回任何内容,语法是否正确?网间网操作系统
而不是写一个大的“if”语句,我想知道这个语法是否正确? 如果不遵守条件,我只使用return这个词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()
@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
语句(因为必须满足多个条件)是非常标准的