Swift - 检查是否填写了至少三个文本字段

时间:2016-02-15 12:07:13

标签: ios swift

我需要使用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。

2 个答案:

答案 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"))
    }
}

此方法的好处:

  • 最重要的是,它有效
  • 这很简单,易于理解。
  • 它处理用户只输入空格的情况。