如何在swift中创建包含字典的字典

时间:2017-05-02 19:16:32

标签: swift dictionary

我按以下方式尝试了语法:

var Days: [String: (Dictonary [Int: Int])] = ["ADay: : [:], "BDay" : [:], "CDay" : [:], "DDay:" : [:]]

我希望稍后再设置它们:

Days.ADay = [1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7] Days.BDay: [Int: Int] = [1:8, 2:1, 3:2, 4:3, 5:4, 6:5, 7:13]

感谢。

3 个答案:

答案 0 :(得分:6)

在Swift中创建嵌套字典很容易。在最简单的形式中,最直观的方式是:

let dict = ["key": ["nestedKey": ":)"]]

在您的情况下,对于初学者,您的报价不匹配。

接下来,您将过度思考字典是什么以及如何实例化它。您正在尝试使用嵌套键(实际上是不可变的)构建预定义的字典。如果您想按照自己的方式进行操作,请不要担心预定义键。当您准备好分配时,请执行:

var days: [String: Dictionary] = []
days["ADay"] = [1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7]

如果您需要更复杂的内容或更结构化的内容,请尝试使用Struct。这是" Swift"服务方式,允许您构建一组复杂的(静态类型!)数据。例如:

struct Days {
    var ADay = [Int: Int]()
    var BDay = [Int: Int]()
    var CDay = [Int: Int]()
    var DDay = [Int: Int]()
}

var days = Days()

days.ADay = [1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7]

答案 1 :(得分:1)

以下是具有合法语法的示例:

var Days: [String: [Int: Int]] = ["ADay": [:], "BDay" : [:], "CDay" : [:], "DDay:" : [:]]

Days["ADay"] = [1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7]

Days["BDay"] = [1:8, 2:1, 3:2, 4:3, 5:4, 6:5, 7:13]

声明类型的另一种方法是var Days: Dictionary<String, Dictionary<Int, Int>>

答案 2 :(得分:1)

如果您正在寻找简写类型声明,它将如下所示。

var twodDict: [String : [String : Int]]

换句话说:

var twodDict: [OuterKey : [InnerKey : StoredObjectorValue]]