Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
145 views
in Technique[技术] by (71.8m points)

ios - How to get a Swift type name as a string with its namespace (or framework name)

Is there any way to get a Swift type name as a string with its namespace (or framework name)?

For example, if Foo.framework has a class named Bar, I would like to get a string something like "Foo.Bar".

The followings just return the class name "Bar".

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

I would like to also get the framework name "Foo" as a namespace.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use String(reflecting:):

struct Bar { }

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

From the Xcode 7 Release Notes:

Type names and enum cases now print and convert to String without qualification by default. debugPrint or String(reflecting:) can still be used to get fully qualified names.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...