如何获得一个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默认情况下没有资格。 debugPrintString(reflecting:)仍可用于获取完全限定的名称。