如何使用Swift协议调用NSStringFromProtocol?
假设如何使用Swift协议调用NSStringFromProtocol?,swift,swift2.1,Swift,Swift2.1,假设 protocol MyCoolProtocol { .... } 以下代码拒绝编译(从Swift 2.1开始): 因为MyCoolProtocol不是Protocol类型。(乍一看,这似乎真的很奇怪,但如果你挖掘得足够多,它[不幸地]是有道理的) 如何在字符串中获取Swift协议的名称?有两种方法: 我能找到的最常见的建议是将您的协议声明为@objc。当您无意从Objective-C代码中引用此协议时,这似乎很奇怪 您可以使用let protocolName=String(myco
protocol MyCoolProtocol {
....
}
以下代码拒绝编译(从Swift 2.1开始):
因为MyCoolProtocol
不是Protocol
类型。(乍一看,这似乎真的很奇怪,但如果你挖掘得足够多,它[不幸地]是有道理的)
如何在字符串中获取Swift协议的名称?有两种方法:
我能找到的最常见的建议是将您的协议声明为@objc
。当您无意从Objective-C代码中引用此协议时,这似乎很奇怪
您可以使用let protocolName=String(mycolprotocol)
。从当前版本的Swift开始,它提供了您所期望的内容(“MyCoolProtocol”
),并且仍然在编译时进行检查
我就是这样做到的:
let protocolString=String(\(MyProtocol.self)”)
let protocolName = NSStringFromProtocol(MyCoolProtocol)