Swift 3中的递归字典

时间:2016-09-15 16:00:30

标签: ios swift swift3

我有这样的小结构:

let arguments = [ "a" : [ "b" : [ "c" : "d", "e" : "f", "g" : "h" ] ] ]

在Swift 2中,我可以将它们作为NSDictionary参数传递给其他函数。现在它的全部错误。 Swift希望我精确地指定Dictionary类型,但由于结构变化不可能。怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

当然,您仍然可以将字典传递给Swift 3中的函数。

如果已知字典结构

在这种情况下,正如 sbarow 所建议的那样,只需在函数的参数中声明字典类型

let arguments = [ "a" : [ "b" : [ "c" : "d", "e" : "f", "g" : "h" ] ] ]

func foo(dict: [String: [String: [String: String]]]) {
    print(dict)
}

foo(dict:arguments)

如果字典结构未知

在这种情况下,如果你只知道你的字典有一个String作为键,那么你可以声明它如下所示

let arguments = [ "a" : [ "b" : [ "c" : "d", "e" : "f", "g" : "h" ] ] ]

func foo(dict: [String: Any]) {
    print(dict)
}

foo(dict:arguments)