首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置深度字典的值?

如何设置深度字典的值?
EN

Stack Overflow用户
提问于 2020-07-20 14:47:34
回答 1查看 58关注 0票数 1

我使用Swift。

我有一个字典变量。

字典看起来像JSON结构。

因此,key:value类型为String: AnyObject。

我想在字典的深层设置一个值。

代码语言:javascript
复制
var dic1: [String: AnyObject] = [String: AnyObject]()

如果是print dic1,则如下所示。

代码语言:javascript
复制
{
"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抛出了"Cannot assign to immutable expression of type 'AnyObject'“错误。

代码语言:javascript
复制
((dic1["a-3"] as? [[String: AnyObject]])?[1] as? [String: AnyObject])?["b-4"] = blahblah as AnyObject
EN

回答 1

Stack Overflow用户

发布于 2020-07-20 15:34:37

错误消息说,您正在尝试更改不可变对象,这是不可能的。因为在Swift中,Dictionary是一个值类型。

首先将需要修改的对象获取到一个变量,修改后再赋值回来。Smth如下所示:

代码语言:javascript
复制
var a3 = (dic1["a-3"] as? [[String: AnyObject]])
a3?[1]["b-4"] = blahblah as AnyObject
dic1["a-3"] = a3 as AnyObject
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62989944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档