swift2 如何使用Swift协议调用NSStringFromProtocol?

q3aa0525  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(232)

假设有一些

protocol MyCoolProtocol {
   ....
}

以下代码拒绝编译(从Swift 2.1开始):

let protocolName = NSStringFromProtocol(MyCoolProtocol)

因为MyCoolProtocol不属于Protocol类型(乍一看,这似乎很奇怪,但如果您深入研究,它(不幸地)是有意义的)。
如何在String中获取Swift protocol的名称?

yrdbyhpb

yrdbyhpb1#

有两种方法:
1.我能找到的最常见的建议是将protocol声明为@objc。当你不打算从Objective-C代码中引用这个protocol时,这似乎很奇怪。
1.你可以使用let protocolName = String(MyCoolProtocol),在Swift的当前版本中,它给出了你所期望的结果("MyCoolProtocol"),并且在编译时仍然会被检查。

yyyllmsg

yyyllmsg2#

我是这样做到的:

let protocolString = String("\(MyProtocol.self)")

相关问题