簡體   English   中英

協議在Swift中包含枚舉時檢查協議一致性?

[英]Check protocol conformance when protocol contains an enum in Swift?

在夫特,為了檢查協議一致性與isas? 向下轉換您必須使用@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM