Ios 验证代码只检查第一项?

Ios 验证代码只检查第一项?,ios,swift,string,validation,uitextfield,Ios,Swift,String,Validation,Uitextfield,我正在使用Swift创建一个应用程序,我需要在提交表单之前验证表单。现在我有一个嵌套的if/else语句附加到iAction内部的“Save”按钮上,如果它看到第一个输入为空,即Name,则该“Name”标签将变为红色并获得*,表示用户必须在继续之前输入该信息。然而,我遇到了一个错误,它只检查第一个输入,并将其变为红色(如果为空),即使整个页面是空的 如何更有效地构建此验证代码,使其在将项变为红色之前检查所有值,并仅检查第一项 `if (Name!.text!.isEmpty) {

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

如何更有效地构建此验证代码,使其在将项变为红色之前检查所有值,并仅检查第一项

`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语句。

首先,遵循适当的
变量命名规则

  • 不要将
    关键字
    用作
    变量
    名称<代码>日期
  • 是一个关键字。改用
    date
    dateField
    或其他方法
  • 用小写字母而不是大写字母命名变量,即用
    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
    }
    
    如果使用If/else嵌套,则只运行其中一个(如果所有都为空)

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

    如果你想做的每一个检查都有一个,如果它们很多,你可以保存一些代码行,如下所示:

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

    当然,这种方式对颜色很好,但对*不太好,因为你不想只是附加,而是想修改它,就像我猜你在处理日期一样。

    你想显示所有空字段的警报吗?是的。理想情况下,我希望用户知道一个字段是空的。如果所有字段都是必填字段,您也可以使用&&operator检查和验证所有必填字段中是否有数据。这将只需要一个if-else,您的所有数据都将得到验证。您的问题对我的代码挑剔帮助很大-
    日期
    不是关键字<代码>if和
    while
    是关键字<代码>日期只是一个结构的名称。你的观点当然是正确的。避免为您自己的类型和变量使用现有的类/结构/枚举名称。我的最后一个条目是textView,而不是名为categoryNotes的textField,该字段不会对此(或我以前的代码)做出响应您有什么建议吗?
    textView
    还有
    text
    属性,您可以用同样的方式检查
    isEmpty
    状态。