Cómo obtener el nombre de la clase de un objeto como cadena en Swift
¡Hola a todos! Soy nuevo en Swift y estoy tratando de entender cómo obtener el nombre de la clase de un objeto como cadena. En Objective-C usaba `NSStringFromClass([self class])`, pero en Swift esto no funciona.
Necesito registrar los tipos de objetos durante la ejecución para depuración. Por ejemplo, tengo un protocolo `Animal` y varias estructuras que lo implementan: `Dog`, `Cat` y `Bird`. En la función `printAnimalType(animal: Animal)` quiero imprimir el nombre del tipo concreto que se pasó, no solo "Animal".
Aquí hay un ejemplo de mi código:
```swift
protocol Animal {
func makeSound()
}
struct Dog: Animal {
func makeSound() { print("Woof!") }
}
struct Cat: Animal {
func makeSound() { print("Meow!") }
}
func printAnimalType(animal: Animal) {
// ¿Cómo obtener la cadena "Dog" o "Cat" aquí?
print("Animal type: \(animal.self)")
}
```
He probado `String(describing: animal.self)`, pero ¿esto devuelve algo como `Animal` o `Dog`? No estoy seguro. También he oído sobre `Mirror` y `type(of: ...)`.