如何在 Swift 中确定对象类型?(type(of:) 和 is/as)
大家好!我刚开始学习 Swift,正在编写我的第一个应用程序。遇到了一个问题:我需要知道变量中存储的对象是什么类型,尤其是在使用协议或继承时。
举个例子。我有一个基类 `Animal` 和两个子类:`Dog` 和 `Cat`。我创建了一个数组 `let animals: [Animal] = [Dog(), Cat(), Dog()]`,并想在 for-in 循环中确定哪些是狗,哪些是猫。在其他语言(例如 C#)中,我使用 `typeof()` 或 `is` 来进行检查。那么在 Swift 中该怎么做呢?
我试过写 `if animal is Dog { ... }`,但这只适用于检查,而如何以字符串形式获取类型名称?我还听说过 `type(of:)`,但我不明白 `type(of:)` 和 `is`/`as` 之间的区别。我不仅需要检查,有时还需要将对象转换为特定类型,以便调用它自己的方法。
请告诉我如何在 Swift 中正确处理类型:如何获取类型,如何检查是否属于类/协议,以及如何进行强制转换。