嵌套词典Swift花括号?

时间:2016-09-07 19:43:50

标签: json swift dictionary

我试图在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)

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

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

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

print(items["location"]!["store"])

有人告诉我:

  

不能下标类型为`[[String:AnyObject]]'的值与   类型索引'字符串'

1 个答案:

答案 0 :(得分:4)

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

更长的回答:
事情是基金会自动将Swift核心类型桥接到Cocoa。据说Swift Dictionary由于NSDictionary约束而被自动桥接到AnyObject,Swift结构不能被转换为AnyObject和{{1}是一个结构。

Dictionary函数调用print属性,description s用大括号。

指定NSDictionary而不是Any时,Swift会将变量类型设置为包含方括号AnyObject的字典。

P.S。
关于description,我认为你有一个数组,所以你应该使用像subscript这样的东西。