[英]Get child class from parent
我在 Swift 编程中有一个大问题。 我正在尝试从父级获取子类的名称。 这是一个示例示例,我想做什么:
class Parent {
class func sayHello() {
let nameChildClass = //
println("hi \(nameChildClass)")
}
}
class Mother: Parent {
}
class Father: Parent {
}
Mother.sayHello()
Father.sayHello()
我知道还有其他方法可以做到这一点,但我真的需要那样做。
您可以使用这样的函数:
func getRawClassName(object: AnyClass) -> String {
let name = NSStringFromClass(object)
let components = name.componentsSeparatedByString(".")
return components.last ?? "Unknown"
}
它接受一个类的实例并使用NSStringFromClass
获取类型名称。
但是类型名称包括命名空间,因此为了摆脱它,它被拆分为一个数组,使用点作为分隔符 - 实际的类名是返回数组的最后一项。
您可以按如下方式使用它:
class Parent {
class func sayHello() {
println("hi \(getRawClassName(self))")
}
}
这将打印实际继承类的名称
从 Swift 5.2
String(describing: Self.self)
您必须覆盖子类中的sayHello
函数:
class Parent {
class func sayHello() {
println("base class")
}
}
class Mother: Parent {
override func sayHello() {
println("mother")
}
}
class Father: Parent {
override func sayHello() {
println("father")
}
}
mother = Mother()
father = Father()
mother.sayHello()
father.sayHello()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.