[英]How can I call NSStringFromProtocol with a Swift protocol?
假設一些
protocol MyCoolProtocol {
....
}
以下代碼拒絕編譯(從Swift 2.1開始):
let protocolName = NSStringFromProtocol(MyCoolProtocol)
因為MyCoolProtocol
的類型不是Protocol
。 (乍看之下,這看起來確實很奇怪,但是如果您進行了足夠的挖掘,這(很不幸)是有道理的)
如何在String
獲取Swift protocol
的名稱?
有兩種方法:
我可以找到的最常見建議是將protocol
聲明為@objc
。 當您無意從Objective-C代碼中引用此protocol
時,這似乎很奇怪。
您可以使用let protocolName = String(MyCoolProtocol)
。 從當前的Swift版本開始,它提供的正是您所期望的( "MyCoolProtocol"
),並且仍在編譯時進行檢查。
這是我完成的方式:
let protocolString = String("\(MyProtocol.self)")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.