Swift 协议(protocol) - 具有任何类型值的字典属性

标签 swift dictionary

我有一个具有以下属性的协议(protocol):

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

它是一个字典,应该有一个 String 作为键,可以接受任何类型作为它的值,即 String, Int, Bool

当我尝试向符合协议(protocol)的类中的字典添加键和值时:

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

我收到以下构建错误:

Protocol requires property 'featureSpecificConfigurationDict' with type '[String : Any]'

连同:

Candidate has non-matching type '[String : String]'

我可以像下面那样将 String 键值转换为 Any 但这对我来说似乎是错误的。

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

所以我的问题是,如何在接受任何类型值的协议(protocol)中正确设置字典属性,然后在符合该协议(protocol)的类中使用它。

最佳答案

编译器正在查看您提供的字典并推断它是一个[String : String]。如果在您的类中声明 featureSpecificConfigurationDict

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

它会意识到您希望能够在其中存储 Any 类型,而不仅仅是那些它在初始值中找到的类型,并且还符合您的协议(protocol)。

关于Swift 协议(protocol) - 具有任何类型值的字典属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612241/

相关文章:

java - 访问 Java 中的字典元素,其中值是列表

python - 有没有办法让字典键成为一个范围?

java - 如何在 Java 中实现多图功能?

dictionary - Mathematica 中条件查询的映射选择

swift - 在 Alamofire 4 中调试 HTTP POST 的正确方法; HTTP POST 不工作

ios - 使用照片框架仅获取实时照片不起作用

使用 RxSwift 的 Tabbar Controller 的 Swift、变量订阅

ios - 无法访问覆盖层的组件

ios - SWIFT如何在触摸屏幕时播放声音

python - 子列表到字典