簡體   English   中英

Swift通訊協定-具有任何類型值的Dictionary屬性

[英]Swift Protocol - Dictionary property with values of any type

我有一個具有以下屬性的協議:

var featureSpecificConfigurationDict: [String: Any] { get set }

這是一個字典,應該以String作為鍵,並且可以采用任何類型作為其值,即StringIntBool

當我嘗試向符合以下協議的類的字典中添加鍵和值時:

var featureSpecificConfigurationDict = ["feature-specific-configuration" : "test"]

我收到以下構建錯誤:

協議要求屬性'featureSpecificConfigurationDict'具有類型[[String:Any]'

隨着:

候選人具有不匹配的類型'[String:String]'

我可以將String鍵值轉換為Any如下所示,但這對我來說似乎是錯誤的。

var featureSpecificConfigurationDict = ["feature-specific-configuration" : "test" as Any]

所以我的問題是,如何正確設置可以接受任何類型值的協議中的字典屬性,然后在符合該協議的類中使用它。

當您編寫var featureSpecificConfigurationDict = ["feature-specific-configuration" : "test"]您將在右側進行類型轉換工作。 因此,編譯器認為它是[String: String] ,您應該在左側處理類型,因此請使用以下命令進行聲明:

var featureSpecificConfigurationDict: [String : Any] = ["feature-specific-configuration" : "test"]

編譯器正在查看您提供的字典,並推斷它是[String : String] 如果在您的類中將featureSpecificConfigurationDict聲明為

var featureSpecificConfigurationDict: [String : Any] = ["feature-specific-configuration" : "test"]

它會意識到您希望能夠在其中存儲Any類型,而不僅僅是在初始值中找到的那些類型,並且還符合您的協議。

String可能與“ Any”兼容,但是[String:String]與[String:Any]不兼容。

var featureSpecificConfigurationDict: [String:Any] = ["feature-specific-configuration" : "test"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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