【问题标题】:Swift 3 - Define dictionary with possible two typesSwift 3 - 定义可能有两种类型的字典
【发布时间】:2017-04-27 10:47:04
【问题描述】:

是否可以定义具有两种可能的值类型的字典?比如:

var obj = [String: String, Int]()

【问题讨论】:

    标签: swift object dictionary types swift3


    【解决方案1】:

    您可以使用协议扩展您需要的所有类型,并且值具有该协议类型:

    protocol StringOrInt {};
    extension String: StringOrInt {}
    extension Int: StringOrInt {}
    
    let dict = [String: StringOrInt]()
    

    不过,使用枚举可能会更好,例如:

    enum StringOrInt {
      case string(String)
      case int(Int)
    }
    
    let obj: [ String : StringOrInt] = [
        "a": .string("Hello"),
        "b": .int(42)
    ]
    

    【讨论】:

      【解决方案2】:

      使用 Anyvar someObject : [String:Any] = [:]

      【讨论】:

        猜你喜欢
        • 2020-12-04
        • 2016-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-27
        • 1970-01-01
        • 2015-02-05
        • 2020-10-29
        相关资源
        最近更新 更多