我需要使用Swift检查,如果我的表单中填写了至少3个文本字段,则在我的表单示例上方
1: name 1 surname 1
2: name 2 surname 2
3: name 3 surname 3
4: name 4 surname 4
5: name 5 surname 5
请注意,必须连接字段,例如,如果输入了名称4,则还必须输入姓氏4。
答案 0 :(得分:1)
这应该做的工作
var name1: UITextField!
var surname1: UITextField!
var name2: UITextField!
var surname2: UITextField!
var name3: UITextField!
var surname3: UITextField!
var name4: UITextField!
var surname4: UITextField!
var name5: UITextField!
var surname5: UITextField!
let list = [(name1, surname1), (name2, surname2), (name3, surname3), (name4, surname4), (name5, surname5)]
let populatedPairs = list.filter {
$0.0?.text?.characters.count > 0 && $0.1?.text?.characters.count > 0
}
if populatedPairs.count > 2 {
// your stuff goes here
}
您还可以定义isValid
功能。
E.g。如果你想让字段中的文字至少有3个字符,你可以
func isValid(name:UITextField?, surname:UITextField?) -> Bool {
return name?.text?.characters.count > 2 && surname?.text?.characters.count > 2
}
随意在函数体内添加自定义逻辑。
这是将函数传递给filter
方法的方法。
let validPairs = list.filter(isValid)
答案 1 :(得分:1)
这是一个更直接的解决方案。我将surname1 textfield称为s1
,name1 textfield称为n1
等(因为我懒惰......)
let nameEntered: [Bool] = []
nameEntered.append(n1.text!.trim() != "" && s1.text.trim() != "")
nameEntered.append(n2.text!.trim() != "" && s2.text.trim() != "")
nameEntered.append(n3.text!.trim() != "" && s3.text.trim() != "")
nameEntered.append(n4.text!.trim() != "" && s4.text.trim() != "")
nameEntered.append(n5.text!.trim() != "" && s5.text.trim() != "")
let enteredCorrectlyCount = 0
for isCorrect in nameEntered {
enteredCorrectly += isCorrect ? 1 : 0
}
if enteredCorrectlyCount >= 3 {
// do stuff
}
trim
定义为
extension String {
func trim(str: String) -> String {
return str.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: " \t\n\r\0"))
}
}
此方法的好处: