json - 嵌套字典 Swift 花括号?

标签 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"])

有人告诉我:

Cannot subscript a value of type `[[String : AnyObject]]' with an index of type 'String'

最佳答案

简答:
使用 [String: Any] 而不是 [String: AnyObject]

更长的答案::
问题是 Foundation 自动将 Swift 核心类型桥接到 Cocoa。这就是说,由于 AnyObject 约束,Swift Dictionary 被自动桥接到 NSDictionary ,Swift 结构不能转换为 AnyObjectDictionary 是一个结构。

print 函数调用 description 属性,对于 NSDictionary 来说,它带有花括号。

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

附言
关于 subscript,我想你那里有一个数组,所以你应该使用像 items[0]["location"]!["store"] 这样的东西。

关于json - 嵌套字典 Swift 花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39377904/

相关文章:

json - 如何在 Play 2.x 中强制执行 JSON 的严格序列化

json - 在jsp中处理json对象

android - 将复杂的 JSON 字符串解码为各种对象

python - 在 python 字典或数据框中查找共现

java - 如何使用 Gson 制作嵌套的 JSON 对象?

swift - 如何设置圆的物理属性使其遵循给定路径

ios - 触摸时添加和删除 SKPhysicsJointPin 的混淆问题

ios - AVAudioEngine 麦克风 float 数据

swift - 如何在函数中使用公式词典中的公式

python - 在列表字典中搜索值