Avatar ·

Verificação de tipo de classe em switch no Swift: como comparar uma instância com um tipo?

Olá a todos! Sou novo em Swift e me deparei com um problema ao trabalhar com classes e switch. Tenho uma hierarquia de classes: a classe base `Animal` e suas subclasses `Dog`, `Cat`, `Bird`. Recebo um array `[Animal]` e quero executar ações diferentes para cada elemento dependendo do seu tipo real. Em Objective-C, eu poderia usar `isKindOfClass:`, mas no Swift isso não funciona. Aqui está meu código atual, que não compila: ```swift class Animal {} class Dog: Animal {} class Cat: Animal {} class Bird: Animal {} let animals: [Animal] = [Dog(), Cat(), Bird(), Dog()] for animal in animals { switch animal { case is Dog: print("Gav!") case is Cat: print("Miau!") case is Bird: print("Piu!") default: print("Animal desconhecido") } } ``` Erro: `'is' patterns may only appear in a case of a 'switch' statement, not in a 'for' loop`. Mas estou usando switch dentro de for! Qual é o problema? Como verificar o tipo corretamente?