是否可以用两种可能的值类型来定义dictionray?类似于:

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

最佳答案

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

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)
]

关于swift - Swift 3-定义可能的两种类型的字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41103062/

10-10 17:40