在textField集合中查找空textField

时间:2017-01-18 15:03:58

标签: ios swift swift3

所以在swift 3中,我只想循环遍历textField outlet集合,如果是textField.text ="",那么就做一些事情。我已经完成了以下操作,但我相信应该有一个更优雅的解决方案,我不必使用数组来检查空文本字段,而是直接从文本字段集合中检查它。

    @IBOutlet var playerNamesCollection: [UITextField]!

    //add names to an array
    var namesArray = [String]()

    for i in 0...8 {

        namesArray.append(playerNamesCollection[i].text!)
    }

   //and then verify that array
    for i in 0...8 {

        if namesArray.contains("") {

            print("missing a name")

        } else {

            print("all textFieldsFilled")
        }

3 个答案:

答案 0 :(得分:2)

您可以过滤掉空白字段:

#include <QObject>

void passMessage(int a, MessageType b) {
   Relay r(a,b);
}

class Relay: public QObject {
    Q_OBJECT
public:
    Relay(int a, MessageType b) {
      emit passMessage(a, b);
    }
signals:
    void passMessage(int, MessageType);
};

或改变它们:

let emptyFields = playerNamesCollection.filtered { $0.text != nil &&  $0.text == "" }

答案 1 :(得分:2)

像这样循环你的数组:

var namesArray = [String]()

namesArray = ["Pierre", "Jean", "", "Michel"]

for name in namesArray {
    if name.isEmpty {
        print("Empty name")
    }
    else {
        print("\(name)")
    }
}

输出

"Pierre"
"Jean"
"Empty name"
"Michel"

答案 2 :(得分:1)

包含是正确的,如果你想知道任何字符串是否为空,但你不关心哪一个(在它找到的第一个实例中包含停止)。你不需要把它放在for循环中。

如果你想知道每个空字符串的索引,请使用enumerated()。flatMap

var namesArray = ["a","b", "", "c", "", "d"]
let emptyIndices = namesArray.enumerated().flatMap { $0.element.isEmpty ? $0.offset : nil }
print(emptyIndices)  // [2, 4]