我有一些实验代码。但最终目标是findType()应该打印/返回true如果obj是'parent'类型
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.
这怎么可以实现?
使用模板建议,
editTextSpieler[i].getLayoutParams().width = dWidth/(anzahl_Spieler + 1);
editTextSpieler[i].setHint("Name");
//Move to last line in the loop.
tableRow.addView(editTextSpieler[i]);
答案 0 :(得分:3)
您可以使用泛型来获取类型:
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)
答案 1 :(得分:1)
为什么不放弃:
raceCar is Car
这将返回true。
答案 2 :(得分:1)
根据Apple Documentation您可以使用type(of:)
返回值的动态类型。
<强>讨论强>
您可以使用类型(of :)函数来查找a的动态类型 值,特别是当动态类型与静态不同时 类型。值的静态类型是已知的编译时类型 价值。值的动态类型是值的实际类型 运行时,可以嵌套在其具体类型中。
在下面的代码中,count变量具有相同的static和 动态类型:Int。当count传递给printInfo(_ :)函数时, 但是,value参数的静态类型为Any(类型 声明参数)和动态类型的Int。
let type = type(of: value as Any)
print("'\(value)' of type '\(type)'")