如何设置字典深度值



我使用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

最新更新