gpt4 book ai didi

ios - 判断一个对象是否是另一个类的子类

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:07 25 4
gpt4 key购买 nike

我有一些实验代码。但最终目标是 findType() 如果 obj 的类型为“parent”,则应打印/返回 true

class Car {}
class RacingCar:Car {}
let raceCar = RacingCar()

func findType(_ obj: Any, parent: AnyClass) {
print(type(of: obj)) // RacingCar
print(parent) // Car
print(type(of: obj) == parent) // false
// if obj is parent {
// print("true")
// }
}

findType(raceCar, parent: Car.self)

如何实现?


有了模板建议,

    func isTypeOf<T>(_ obj: Any, parent: T.Type) {
if obj is T { // true
print("true")
}
}

isTypeOf(raceCar, parent: Car.self) // worked

func getType(parentClass: AnyClass){
isTypeOf(raceCar, parent: parentClass)
}
getType(parentClass: Car.self) // this dont work.

最佳答案

您可以使用泛型来获取类型:

func findType<T>(_ obj: Any, parent: T.Type) {
print(type(of: obj)) // RacingCar
print(parent) // Car
print(type(of: obj) == parent) // false
if obj is T { // true
print("true")
}
}

findType(raceCar, parent: Car.self)

或者,你可以直接传入一个parent对象,那么它看起来像这样:

func findType<T>(_ obj: Any, parent: T) {
print(type(of: obj)) // RacingCar
print(type(of: parent)) // Car
print(type(of: obj) == T.self) // false
if obj is T {
print("true")
}
}

let car = Car()
findType(raceCar, parent: car)

关于ios - 判断一个对象是否是另一个类的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50254403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com