从父母那里获取子课程

use*_*028 3 ios swift ios8

我在Swift编程中遇到了很大的问题.我试图从父级获取子类的名称.这是一个示例,我想做的事情:

class Parent {
  class func sayHello() {
      let nameChildClass = //
      println("hi \(nameChildClass)")
  }
}

class Mother: Parent {

}

class Father: Parent {

}

Mother.sayHello()
Father.sayHello()
Run Code Online (Sandbox Code Playgroud)

我知道还有其他方法,但我真的需要这样做.

小智 6

从斯威夫特 5.2 开始

String(describing: Self.self)
Run Code Online (Sandbox Code Playgroud)


Ant*_*nio 5

你可以使用这样的函数:

func getRawClassName(object: AnyClass) -> String {
    let name = NSStringFromClass(object)
    let components = name.componentsSeparatedByString(".")
    return components.last ?? "Unknown"
}
Run Code Online (Sandbox Code Playgroud)

它接受一个类的实例并使用获取类型名称NSStringFromClass.

但是类型名称包含命名空间,因此要将其拆分为数组,使用点作为分隔符 - 实际的类名是返回数组的最后一项.

您可以按如下方式使用它:

class Parent {
    class func sayHello() {
        println("hi \(getRawClassName(self))")
    }
}
Run Code Online (Sandbox Code Playgroud)

这将打印实际继承类的名称