Очевидно, вы должны устранить это != nil
.
Я бы также порекомендовал:
- обрезать пробел, чтобы кто-то не вводил пробел, чтобы пройти проверку;
- использовать
isEmpty
обрезанной строкичтобы убедиться, что там что-то есть, - начать свойства и имена методов строчными буквами;
- Я лично даю своим
UITextField
свойствам суффикс TextField
(чтобы я мог различить emailTextField
текстовое поле из строки email
.
Таким образом, возможно, что-то вроде:
@IBAction func didTapSignup(_ sender: Any) {
guard let email = emailTextField.text?.trimmingCharacters(in: .whitespaces),
!email.isEmpty,
let password = passwordTextField.text?.trimmingCharacters(in: .whitespaces),
!password.isEmpty else {
// tell the user that validation failed here ...
// ... and then return
return
}
// do something with `email` and `password`
}
Вы можете проверить, например, что адрес электронной почты и парольпройти некоторые элементарные правила:
let emailRegexString = "^[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$" // oversimplified email regex
func isAcceptable(email: String, password: String) -> Bool {
let isEmailAcceptable = email.range(of: emailRegexString, options: .regularExpression) != nil
let isPasswordAcceptable = password.count > 4
return isEmailAcceptable && isPasswordAcceptable
}
И затем
@IBAction func didTapSignup(_ sender: Any) {
guard let email = emailTextField.text?.trimmingCharacters(in: .whitespaces),
let password = passwordTextField.text?.trimmingCharacters(in: .whitespaces),
isAcceptable(email: email, password: password) else {
// tell the user that validation failed here ...
// ... and then return
return
}
// do something with `email` and `password`
}
Обратите внимание, что регулярное выражение является чрезвычайно чрезмерно упрощенной проверкой электронной почты . Но вы можете сходите с ума по регулярному выражению , если вы действительно хотите.
Я бы также, как минимум, настроил текстовые поля моей электронной почты и пароля таким образом, чтобы пробелы не допускались. Итак, укажитеdelegate
для текстовых полей электронной почты и пароля, а затем запрещающие пробелы:
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return string.rangeOfCharacter(from: .whitespacesAndNewlines) == nil
}
}