所以在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")
}
答案 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]