For-in循环和类型转换仅适用于匹配类型的对象

Shu*_*060 4 casting for-in-loop swift

我在这里看到解释如何告诉编译器数组在循环中是某种类型的答案.

但是,Swift是否提供了一种方法,以便循环只循环遍历数组中指定类型的项而不是崩溃或根本不执行循环?

Mar*_*n R 19

您可以使用带有案例模式的for循环:

for case let item as YourType in array {
    // `item` has the type `YourType` here 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这将仅对阵列中那些类型(或可以转换为)的项执行循环体YourType.

示例(从 循环到子视图检查空的UITextField - Swift):

for case let textField as UITextField in self.view.subviews {
    if textField.text == "" {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)