1

假设一些

protocol MyCoolProtocol {
   ....
}

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

let protocolName = NSStringFromProtocol(MyCoolProtocol)

因为MyCoolProtocol不是类型Protocol。(乍一看,这似乎很奇怪,但如果你挖得够多,[不幸地]是有道理的)

如何在 a 中获取我的 Swift 的protocol名称String

4

2 回答 2

2

有两种方法:

  1. 我能找到的最常见的建议是将你的声明protocol@objc. 当您无意protocol从 Objective-C 代码中引用它时,这似乎很奇怪。

  2. 您可以使用let protocolName = String(MyCoolProtocol). 在当前版本的 Swift 中,这完全符合您的期望 ( "MyCoolProtocol"),并且仍在编译时进行检查。

于 2015-11-16T21:26:52.587 回答
0

这就是我实现它的方式:

let protocolString = String("\(MyProtocol.self)")
于 2019-03-05T15:28:50.733 回答