Avatar ·

Comment déterminer le type d'un objet en Swift ? (type(of:) et is/as)

Bonjour à tous ! Je viens de commencer à apprendre Swift et j'écris ma première application. J'ai rencontré un problème : je dois comprendre de quel type est l'objet contenu dans une variable, surtout lorsque j'utilise des protocoles ou de l'héritage. Voici un exemple. J'ai une classe de base `Animal` et deux sous-classes : `Dog` et `Cat`. Je crée un tableau `let animals: [Animal] = [Dog(), Cat(), Dog()]` et je veux dans une boucle for-in déterminer qui est un chien et qui est un chat. Dans d'autres langages (par exemple, en C#), j'utilisais `typeof()` ou `is` pour vérifier. Comment faire cela en Swift ? J'ai essayé d'écrire `if animal is Dog { ... }`, mais cela fonctionne seulement pour la vérification. Comment obtenir le nom du type sous forme de chaîne ? J'ai aussi entendu parler de `type(of:)`, mais je ne comprends pas la différence entre `type(of:)` et `is`/`as`. Je n'ai pas seulement besoin de vérifier, mais parfois aussi de caster l'objet vers un type spécifique pour appeler sa propre méthode. S'il vous plaît, expliquez-moi comment travailler correctement avec les types en Swift : comment connaître le type, comment vérifier l'appartenance à une classe/protocole et comment effectuer un cast.