[英]Check protocol conformance when protocol contains an enum in Swift?
在夫特,為了檢查協議一致性與is
或as?
向下轉換您必須使用@objc
屬性標記協議。 一旦您使用該屬性標記協議,您似乎無法將枚舉作為屬性,因為枚舉無法在Objective-C中表示。
enum Language:String {
case English = "English"
case Spanish = "Spanish"
case German = "German"
}
@objc protocol Humanizable {
var language:Language { get set }
}
您將收到錯誤: error: property cannot be marked @objc because its type cannot be represented in Objective-C
以下是完整示例: http : //swiftstub.com/475659213/
在示例中,如果您將Language
更改為String
那么它可以正常工作。
這不是答案,但我確實在你的'swift stub'中發現了編譯錯誤, Human
應定義如下:
class Human:Humanizable {
var name:String = "Frank"
var language:Language = .English
}
您試圖從字符串文字創建枚舉實例。
我有點驚訝協議一致性檢查需要@obj
- 這只是丑陋!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.