我使用Swift
我有一个字典变量
字典看起来像JSON结构
因此,key:value类型为[String:AnyObject]
我想在字典深处设置一个值。
var dic1: [String: AnyObject] = [String: AnyObject]()
如果打印dic1,请显示如下。
{
"a-1": 1,
"a-2": "a-2-1,
"a-3": [
{
"b-1": "hi",
"b-2": 10,
"b-3": [
{
"c-1": 100
},
{
"c-1": 101,
"c-2": "aaa"
},
]
},
{
"b-1": "hello",
"b-2": 20,
"b-3": [
{
"c-1": 200
},
{
"c-1": 201,
"c-2": "bbb"
}
]
// <- want to set to here
}
]
}
然后,我想将一些值设置为关键字";b-4">
我试过了,但xcode把我扔了"无法分配给类型为"AnyObject"的不可变表达式";错误
((dic1["a-3"] as? [[String: AnyObject]])?[1] as? [String: AnyObject])?["b-4"] = blahblah as AnyObject
错误消息说,您正在尝试更改一个不可变对象,这是不可能的。因为在Swift中,Dictionary是一种值类型。
首先将要修改的对象获取为变量,并在修改后重新分配。Smth如下:
var a3 = (dic1["a-3"] as? [[String: AnyObject]])
a3?[1]["b-4"] = blahblah as AnyObject
dic1["a-3"] = a3 as AnyObject