我正在尝试在swift中设置一个简单的字典:
var dict = [
"_id": "123",
"profile": [
"name": "me",
"username": nil,
]
] as [String : Any]
然而,Contextual type 'AnyObject' cannot be used with dictionary literal
失败了。在this question之后,我尝试将[String : Any]
替换为[String : [String : Any]]
,但这在逻辑上失败了,因为第一个值的类型为String
而不是[String : Any]
。
我只想拥有一些东西,它可以包含任何我可以表示为json的数据,而且我可以在稍后尝试访问它们时保留一些东西。
答案 0 :(得分:5)
Swift是一种严格类型的语言,因此问题在于,当您将nil
添加到词典时,它无法知道其值的类型所以它会抱怨说类型不明确。
您可以通过执行以下操作来指定字典的键类型和值:
let profile: [String: AnyObject?] = ["name": "me", "username": nil]
let dict = ["_id": "123", "profile": profile] as [String : Any]
或者,您可以使用init(dictionaryLiteral:)
构造函数来创建字典:
let dict = [
"_id": "123",
"profile": Dictionary<String, AnyObject?>(dictionaryLiteral: ("name", "me"), ("username", nil))
] as [String : Any]
答案 1 :(得分:0)
或者,将它们拆分也可以:
let insideDict = [
"name": "me",
"username": nil,
]
var dict = [String : Any]()
dict["_id"] = "123"
dict["profile"] = insideDict