我见过答案here,它解释了如何告诉编译器数组在循环中是某种类型。
但是,Swift是否提供了一种方法,以便循环只循环数组中指定类型的项而不是崩溃或根本不执行循环?
答案 0 :(得分:15)
您可以使用带有案例模式的for循环:
for case let item as YourType in array {
// `item` has the type `YourType` here
// ...
}
这将仅针对那些项目执行循环体
数组类型(或可以转换为)YourType
。
示例(来自 Loop through subview to check for empty UITextField - Swift):
for case let textField as UITextField in self.view.subviews {
if textField.text == "" {
// ...
}
}
答案 1 :(得分:0)
给出像这样的数组
let things: [Any] = [1, "Hello", true, "World", 4, false]
您还可以使用flatMap
和forEach
的组合迭代Int
值
things
.flatMap { $0 as? Int }
.forEach { num in
print(num)
}
或
for num in things.flatMap({ $0 as? Int }) {
print(num)
}
在这两种情况下,您都会获得以下输出
// 1
// 4