Проверка, чтобы видеть, являются ли поля пустыми, не работает

Кажется, у меня проблемы с этим кодом. Попытка запустить проверку, чтобы убедиться, что поля имеют текст. Если в полях нет текста, он должен отображать HUD с текстом "Электронная почта / пароль не могут быть пустыми". Похоже, что он игнорирует проверку и сразу переходит к попытке входа. Когда я удаляю принудительное развертывание, он останавливается и выполняет проверку, но если в полях есть текст, то сообщение HUD не переходит вперед. "

@IBAction func logInDidTapped(_ sender: Any) {
    guard let email = emailTxtField.text, !email.isEmpty,
    let password = passwordTxtField.text, !password.isEmpty else {
        SVProgressHUD.showError(withStatus: "Email/Password Can't Be Empty")
        return
    }
    SVProgressHUD.show(withStatus: "Signing In...")
}

2 ответа

Сделайте ваш чек таким же простым, как следующее, чтобы проверить, UITextfield есть текст или нет:

if emailTxtField.text == "" || passwordTxtField.text == "" {
    SVProgressHUD.showError(withStatus: "Email/Password Can't Be Empty")
    return
}

SVProgressHUD.show(withStatus: "Signing In...")

Надеюсь, что это помогает вам.

Вы не обязаны использовать охрану, потому что emailTxtField.text/passwordTxtField.text возвращается как "" если они пусты.

Для точных результатов проверьте count из для текста.

@IBAction func logInDidTapped(_ sender: Any) {

    if let email = emailTxtField.text,
        let password = passwordTxtField.text {

        if email.count > 0 && password.count > 0 {

            SVProgressHUD.show(withStatus: "Signing In...")
        } else {

            SVProgressHUD.showError(withStatus: "Email/Password Can't Be Empty")
        }
    }
}
Другие вопросы по тегам