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