相关疑难解决方法(0)

在Swift中获取对象的类名作为字符串

使用获取对象的类名作为字符串

object_getClassName(myViewController)
Run Code Online (Sandbox Code Playgroud)

返回这样的东西

_TtC5AppName22CalendarViewController
Run Code Online (Sandbox Code Playgroud)

我正在寻找版本:"CalendarViewController".如何获得清理的类名字符串?

我发现了一些有关此问题的尝试但不是真正的答案.这不可能吗?

swift

287
推荐指数
21
解决办法
18万
查看次数

在swift中获取用户可读的类名(在objc NSStringFromClass中很好)

在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)

但是,在语言中使用内置方法更容易.

cocoa-touch swift

29
推荐指数
5
解决办法
2万
查看次数

标签 统计

swift ×2

cocoa-touch ×1