有什么办法可以将Swift类型名称作为带有名称空间(或框架名称)的字符串?
例如,如果Foo.framework有一个名为的类Bar,我想获取类似的字符串"Foo.Bar"。
Foo.framework
Bar
"Foo.Bar"
以下仅返回类名"Bar"。
"Bar"
let barName1 = String(Bar.self) // returns "Bar" let barName2 = "\(Bar.self)" // returns "Bar" let barName3 = "\(Bar().dynamicType)" // returns "Bar"
我还想获得框架名称"Foo"作为名称空间。
"Foo"
用途String(reflecting:):
String(reflecting:)
struct Bar { } let barName = String(reflecting: Bar.self) print(barName) // <Module>.Bar
从Xcode 7发行说明:
默认情况下,现在可以打印类型名称和枚举大小写,并将其转换为String而不带限定符。debugPrint或String(reflecting:)仍可用于获取完全限定的名称。
debugPrint