【问题标题】:How Can I Put a Dictionary Inside An Array That's Nested In Another Dictionary? (Swift)如何将字典放入嵌套在另一个字典中的数组中? (迅速)
【发布时间】:2021-12-26 14:07:37
【问题描述】:

我想将字典数组添加到现有字典中。

var details: [String : [String : String]] = [:]
viewDidLoad()
...
    for i in 0..<count {
        let hour = makeHourString()
        details[hour] = [String: String] () as [String : String]
        let dict = ["detailKey": "2100xx", "detailImage":"base64xx"]
        details[hour].append(dict)
    }
...

它告诉我:“[String : String]”类型的值没有成员“附加”。但是不应该是数组吗?

如果我将代码更改为,我可以获得这种嵌套字典:

var details: [String: [Any]] = [:]
viewDidLoad()
...
    for i in 0..<count {
        let hour = makeHourString()
        details[hour] = [String] () as [String]
        let dict = ["detailKey": "2100xx", "detailImage":"base64xx"]
        details[hour].append(dict)
    }
...

不幸的是,这对我不起作用,因为我需要能够使用 Codable 存储我的数据源。非常感谢任何帮助。

【问题讨论】:

  • for _ in 0..&lt;count { details[makeHourString()] = ["detailKey": "2100xx", "detailImage":"base64xx"] }
  • 或者如果你想要一个数组for _ in 0..&lt;count { details[makeHourString()] = [["detailKey": "2100xx", "detailImage":"base64xx"]] }
  • 我喜欢您在索引中直接使用 makeHourString 方法的方式。出于某种原因,我对这样做很偏执。 :)

标签: arrays swift dictionary nested


【解决方案1】:

[String : String]Dictionary 而不是 Array ,根据您的情况,您需要

var details: [String: [[String:String]]] = [:]

当然你也可以这样做

var details: [String:[Item]] = [:]

struct Item {
   let detailKey, detailImage:String
}

【讨论】:

  • 呃。制作钥匙时,我在尝试没有额外的嵌套数组。这有效: details[time] = [[String: String]] () as [[String: String]] 你帮我弄清楚了。上帝保佑你。
  • @Lester 不需要演员阵容 (as ...)。
猜你喜欢
  • 2021-02-08
  • 2020-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 2018-01-29
相关资源
最近更新 更多