假设有一些
protocol MyCoolProtocol { .... }
以下代码拒绝编译(从Swift 2.1开始):
let protocolName = NSStringFromProtocol(MyCoolProtocol)
因为MyCoolProtocol不属于Protocol类型(乍一看,这似乎很奇怪,但如果您深入研究,它(不幸地)是有意义的)。如何在String中获取Swift protocol的名称?
MyCoolProtocol
Protocol
String
protocol
yrdbyhpb1#
有两种方法:1.我能找到的最常见的建议是将protocol声明为@objc。当你不打算从Objective-C代码中引用这个protocol时,这似乎很奇怪。1.你可以使用let protocolName = String(MyCoolProtocol),在Swift的当前版本中,它给出了你所期望的结果("MyCoolProtocol"),并且在编译时仍然会被检查。
@objc
let protocolName = String(MyCoolProtocol)
"MyCoolProtocol"
yyyllmsg2#
我是这样做到的:
let protocolString = String("\(MyProtocol.self)")
2条答案
按热度按时间yrdbyhpb1#
有两种方法:
1.我能找到的最常见的建议是将
protocol
声明为@objc
。当你不打算从Objective-C代码中引用这个protocol
时,这似乎很奇怪。1.你可以使用
let protocolName = String(MyCoolProtocol)
,在Swift的当前版本中,它给出了你所期望的结果("MyCoolProtocol"
),并且在编译时仍然会被检查。yyyllmsg2#
我是这样做到的: