我试图在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]]'的值与 类型索引'字符串'
答案 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
这样的东西。