我想检查两个对象是否属于或属于同一父类(super class)。
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
这里两个语句的计算结果均为 true,如 is
关键字显然正在考虑父类(super class)。但我不能这样做的是比较两个对象的类型,如下所示:
myOtherObject is myObject // Use of undeclared type 'myObject'
我需要得到这样的结果:
myObject is myOtherObject // true
mySubclassedObject is myObject // true
myObject is mySubclassedObject // false
我希望找到类似 .isSubclassOf
的东西但这在 Swift 中似乎不可用。那么我怎样才能得到我想要的结果呢?
最佳答案
一种方法可能是尝试这样的泛型
func isObject<P>(_ object: Any, ofType other: P) -> Bool {
object is P
}
isObject(myObject, ofType: myOtherObject) //true
isObject(mySubclassedObject, ofType: myObject) //true
isObject(myObject, ofType: mySubclassedObject) //false
关于Swift - 检查两个对象是否具有相同类型或父类(super class)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64973904/