Avatar ·

Verificación de tipo de clase en switch en Swift: ¿cómo comparar una instancia con un tipo?

¡Hola a todos! Soy nuevo en Swift y me encontré con un problema al trabajar con clases y switch. Tengo una jerarquía de clases: la clase base `Animal` y sus subclases `Dog`, `Cat`, `Bird`. Recibo un array `[Animal]` y quiero realizar diferentes acciones para cada elemento según su tipo real. En Objective-C podría usar `isKindOfClass:`, pero en Swift esto no funciona. Aquí está mi código actual, que no 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("¡Guau!") case is Cat: print("¡Miau!") case is Bird: print("¡Pío!") default: print("Animal desconocido") } } ``` Error: `'is' patterns may only appear in a case of a 'switch' statement, not in a 'for' loop`. ¡Pero estoy usando switch dentro de for! ¿Cuál es el problema? ¿Cómo verificar el tipo correctamente?