嵌套字典 Swift 花括号?

Tim*_*eng 5 json dictionary swift

我正在尝试在 Swift 中创建一个嵌套字典,以便稍后将其更改为 JSON。我是这样设置的:

let item: [String: AnyObject] = [
        "item": item,
        "price": price,
        "date": date,
        "time": time,
        "location": [
          "store": "Store name",
          "address": "1234 Untitled Dr.",
          "city": "City",
          "state": "CA",
          "zip": "12345"
        ]
      ]
print(item)
Run Code Online (Sandbox Code Playgroud)

当我运行它时,输出是这样的:

["price": 15.69, "location": {
    address = "12350 Carmel MT Road";
    city = "City";
    state = CA;
    store = "Store name";
    zip = 12345;
}, "item": item, "date": , "time": ]
Run Code Online (Sandbox Code Playgroud)

位置值应该是一个嵌套字典。为什么定位部分周围有花括号?为什么在是否有引号时值不一致?此外,当我尝试访问时:

print(items["location"]!["store"])
Run Code Online (Sandbox Code Playgroud)

有人告诉我:

不能使用类型为“String”的索引为“[[String : AnyObject]]”类型的值添加下标

S2d*_*ent 5

简短回答
使用[String: Any]代替[String: AnyObject]

较长的答案:
事情是基金会自动桥梁斯威夫特核心类型可可。这就是说 Swift由于约束Dictionary而被自动桥接,一个 Swift 结构不能被强制转换为一个并且是一个结构。NSDictionaryAnyObjectAnyObjectDictionary

print函数调用description属性,这对于NSDictionaryS与大括号内。

当指定Any而不是AnyObjectSwift 时,只会将变量类型设置为带有方括号的 Dictionary description

PS
关于这subscript件事,我认为你在那里有一个数组,所以你应该使用类似items[0]["location"]!["store"].