验证码仅检查第一项?

时间:2019-06-05 18:35:03

标签: ios swift string validation uitextfield

我正在使用Swift创建一个应用程序,我需要在提交表单之前验证表单。现在,我在IBAction内部的“保存”按钮上附加了一个嵌套的if / else语句,如果它看到空的第一个输入(即名称),则“名称”标签变成红色并显示*,表示用户必须输入该信息,然后再继续。但是,我遇到了一个错误,即使整个页面都是空的,它也只会检查第一个输入并将其变为红色(如果为空)。

我如何才能更有效地构建此验证代码,以便在将所有项目变为红色之前,仅将第一个项目变为红色之前,先检查所有值。

`if (Name!.text!.isEmpty) {
            nameLabel.text = "Name *"
            nameLabel.textColor = UIColor.red
        } else {
            if (Date!.text!.isEmpty) {
                dateLabel.text = "Outage Event ID *"
                dateLabel.textColor = UIColor.red
            } `

这是更长的时间,但是我没有看到需要添加所有它们的情况,因此它们是前两个嵌套的if / else语句。

2 个答案:

答案 0 :(得分:2)

首先遵循正确的naming rules for variables

  1. 请勿将keywords用作variable的名称。 Date是关键字。改用datedateField或其他方式。
  2. 用小写字母而不是大写字母来命名变量,即name而不是Name

不是使用嵌套的if语句,而是使用多个if语句来检查所有字段,即

if let text = name?.text, text.isEmpty {
    nameLabel.text = "Name *"
    nameLabel.textColor = UIColor.red
}

if let text = date?.text, text.isEmpty {
    dateLabel.text = "Outage Event ID *"
    dateLabel.textColor = UIColor.red
}

答案 1 :(得分:0)

如果您嵌套If / else,则只会运行其中之一(以防万一都是空的)

在您的示例中,名称已经为空,因此它将执行您的if代码并丢弃else。

如果要进行的每项检查,都应该执行一次,如果它们很多,则可以保存一些代码行,如下所示:

for textField in [nameTextField, dateTextField, etc] {
   if textField.isEmpty {
      textField.textColor = .red
      textField.text.append(" *")
   }
}

当然,这种方式对颜色有效,但对*却不那么有效,以防您不希望仅追加而是修改它,就像我猜想在Date的情况下所做的那样。

相关问题