所以在swift 3中,我只想循环遍历textField outlet集合,如果a 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")
}发布于 2017-01-18 23:08:16
您可以过滤掉空字段:
let emptyFields = playerNamesCollection.filtered { $0.text != nil && $0.text == "" }或在适当的位置更改它们:
let result = playerNamesCollection.map { (textField: UITextField) -> UITextField in
if let text = textField.text, text == "" {
// textField.text is "". Do whatever you need to do with it
textField.text! = "Edited empty text"
}
return textField
}发布于 2017-01-18 23:20:59
只需像这样在数组上循环:
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"发布于 2017-01-19 11:29:22
contains是正确的,如果你想知道是否有任何字符串是空的,但是你不关心是哪一个(contains在它找到的第一个实例停止)。您不需要将其放在for循环中。
如果想知道每个空字符串的索引,请使用enumerated().flatMap
var namesArray = ["a","b", "", "c", "", "d"]
let emptyIndices = namesArray.enumerated().flatMap { $0.element.isEmpty ? $0.offset : nil }
print(emptyIndices) // [2, 4]https://stackoverflow.com/questions/41722737
复制相似问题