使用获取对象的类名作为字符串
object_getClassName(myViewController)
Run Code Online (Sandbox Code Playgroud)
返回这样的东西
_TtC5AppName22CalendarViewController
Run Code Online (Sandbox Code Playgroud)
我正在寻找纯版本:"CalendarViewController".如何获得清理的类名字符串?
我发现了一些有关此问题的尝试但不是真正的答案.这不可能吗?
在Swift中是否有一个等效的NSStringFromClass,它提供了类名的用户可读版本?我试图将它与我创建的本机Swift类一起使用,但正如您所看到的,结果似乎是编译器类名的内部表示:
println(NSStringFromClass(MyClass.self))
Run Code Online (Sandbox Code Playgroud)
结果:
_TtC5test7MyClass
Run Code Online (Sandbox Code Playgroud)
我已经尝试将@objc属性添加到类中,并使其成为NSObject的子类,但它没有任何区别.我发现如果我用同名的Objective-C类替换MyClass,并在桥接头中导入它,它会给我'MyClass',但这不是必需的.
另一种选择是为此制定一个协议,我想以这种方式使用的每个类必须符合:
protocol Nameable {
class var className: String { get }
}
Run Code Online (Sandbox Code Playgroud)
但是,在语言中使用内置方法更容易.