【问题标题】:Recursive Dictionaries in Swift 3Swift 3 中的递归字典
【发布时间】:2017-01-23 17:51:31
【问题描述】:

我有这样的小结构:

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

在 Swift 2 中,我可以将它们作为 NSDictionary 参数传递给其他函数。现在都是错误。 Swift 希望我准确地指定 Dictionary 类型,但由于结构不同,这是不可能的。如何解决?

【问题讨论】:

  • 为什么不能声明类型? [ String : [ String : [ String : String ]]]?
  • 尝试将其他函数中的字典参数改成Swift类型,Swift Dictionary最常见但指定的类型是[String:Any]

标签: ios swift swift3


【解决方案1】:

当然,您仍然可以将字典传递给 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2020-06-10
    • 2012-11-11
    • 2018-01-05
    • 2017-10-29
    • 2016-11-19
    相关资源
    最近更新 更多