如何获得一个Swifttypes的名字作为一个string与它的命名空间(或框架名称)
有什么办法让一个Swifttypes的名字作为一个string与其命名空间(或框架名称)?
例如,如果Foo.framework
有一个名为Bar
的类,我想得到一个类似"Foo.Bar"
的string。
以下只是返回类名"Bar"
。
let barName1 = String(Bar.self) // returns "Bar" let barName2 = "\(Bar.self)" // returns "Bar" let barName3 = "\(Bar().dynamicType)" // returns "Bar"
我也想获得框架名称"Foo"
作为命名空间。
使用String(reflecting:)
:
struct Bar { } let barName = String(reflecting: Bar.self) print(barName) // <Module>.Bar
从Xcode 7发行说明 :
现在键入名称和枚举的情况下打印并转换为string默认情况下没有资格。
debugPrint
或String(reflecting:)
仍可用于获取完全限定的名称。