【发布时间】:2021-03-06 11:48:38
【问题描述】:
我想检查两个对象是否属于 - 或属于 - 同一个超类。
class myClass {}
class mySubclass: myClass {}
let myObject = myClass()
let myOtherObject = myClass()
let mySubclassedObject = mySubclass()
我知道我可以这样检查类型:
type(of: myObject) == myClass.self // true
type(of: myObject) == type(of: myOtherObject) // true
type(of: mySubclassedObject) == myClass.self // false
最后一条语句返回 false,因为 type(of: <T>) 显然返回了对象的最终类。
类型检查的另一种方法是is 关键字:
mySubclassedObject is mySubclass // true
mySubclassedObject is myClass // true
这里两个语句都为真,因为is 关键字显然是在考虑超类。但是我不能这样做是像这样比较两个对象的类型:
myOtherObject is myObject // Use of undeclared type 'myObject'
我需要得到这样的结果:
myObject is myOtherObject // true
mySubclassedObject is myObject // true
myObject is mySubclassedObject // false
我希望找到类似.isSubclassOf 的东西,但这似乎在 Swift 中不可用。那么我怎样才能得到我想要的结果呢?
【问题讨论】: