Swift 2.0:如何声明嵌套字典?

时间:2016-02-19 22:01:15

标签: swift dictionary

我正在尝试执行类似于JSON数据包的复杂Swift Dictionary声明。然而,编译器正在打击我。这就是我想要做的事情:

var icons: [[Any:Any]] = [
    "categories:":[
        ["cat2" : [
            ["name":"ImageName","type":"image"],
            ["name":"ImageName","type":"scroll","panel":panel1],
            ["name":"ImageName","type":"chooser","panel":[
                ["name":"ImageName"]]]
            ]
        ],
        ["cat2" : ["name":"ImageName"]],
        ["cat3" : ["name":"ImageName"]],
        ["cat4" : ["name":"ImageName"]],
        ["cat5" : ["name":"ImageName"]]
    ],
    "size":["x":"128","y":"128"]
]

我不知道如何宣布这一点。如您所知,我将第一个元素作为String,将以下子元素作为附加的Dictionaries。

我想知道Swift中这些数据结构的最佳实践方法。

提前谢谢你。

2 个答案:

答案 0 :(得分:4)

正确的方法是 NOT 来使用字典。

您应该创建一些模型类型(最好是structs)并将它们组合起来。

否则管理像这样的字典将是地狱。

答案 1 :(得分:1)

在这种情况下,你实际上是在宣布一个字典数组,而不是字典字典:set ASPNET_ENV = cloud(或者更好的是,根据你的数据)[Any:[Any:Any]]但这不会起作用,因为[String:[String:Any]]键值实际上是一个数组,而不是一个字符串。那时你只剩下categories

然而,最重要的是,采用@ appzYourLife的方法并定义合适的模型类型会更好。