一个明确的方法就是每个配置都有一个guard
声明。像这样:
guard emailInput.isEmailValid else { print("Email is invalid") }
guard passwordInput.isPasswordValid else { print("Password is invalid") }
.
.
.
print("Valid")
另一个很酷的方法来做同样的事情就是使用元组。像:
typealias Condition = (isValid: Bool, name: String)
let conditions: [Condition] = [
(emailInput.isEmailValid, "Email"),
(passwordInput.isPasswordValid, "Password"),
.
.
]
let isInputValid = conditions.reduce(true) { (aggregate, condition) -> Bool in
if !condition.isValid { print("Invalid \(condition.name)") }
return aggregate && condition.isValid
}
guard isInputValid else { return }
// handle valid input now
这允许检查所有条件,而不是只在第一个无效条件退出。输出看起来是这样的:
Invalid Password
Invalid Date of birth
如果COND1 {如果COND2 {打印( “OK”)}否则{打印( “COND2柯”)}否则{打印( “COND1 KO”)} – FredericP
这取决于什么这是否意味着你“知道条件的哪一部分是无效的”。你可以将它分成六个函数来检查值并返回布尔值,例如:if emailInputOk()&& passwordOk()&& userNameInputOk ... etc和在这个函数中打印或做其他事情... – tosha