一個明確的方法就是每個配置都有一個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