一尘不染

如何使用名称空间(或框架名称)将Swift类型名称作为字符串获取

swift

有什么办法可以将Swift类型名称作为带有名称空间(或框架名称)的字符串?

例如,如果Foo.framework有一个名为的类Bar,我想获取类似的字符串"Foo.Bar"

以下仅返回类名"Bar"

let barName1 = String(Bar.self)       // returns "Bar"
let barName2 = "\(Bar.self)"          // returns "Bar"
let barName3 = "\(Bar().dynamicType)" // returns "Bar"

我还想获得框架名称"Foo"作为名称空间。


阅读 208

收藏
2020-07-07

共1个答案

一尘不染

用途String(reflecting:)

struct Bar { }

let barName = String(reflecting: Bar.self) 
print(barName) // <Module>.Bar

Xcode
7发行说明

默认情况下,现在可以打印类型名称和枚举大小写,并将其转换为String而不带限定符。debugPrintString(reflecting:)仍可用于获取完全限定的名称。

2020-07-07