【问题标题】:How do you add a new key to a dictionary in swift?如何在 swift 中向字典添加新键?
【发布时间】:2016-12-02 08:46:44
【问题描述】:

如何在 Swift 中为 Dictionary 添加新密钥?我收到一个错误:

这个类不符合键地址的键值编码...

这是我的代码:

let user = [
     "id": id,
     "name" : name
]

if customer.address != nil {
    let address = [
         "street": customer.address.street,
         "zip": customer.address.zip,
    ]

    user.setValue(address, forKey: "address")
}

更新代码:

var user = [
            "id": customer.id,
            "name" : customer.fullName!,
            "position" : customer.position != nil ? customer.position! : ""
        ]

        if customer.address != nil {
            let address = [
                "street": customer.address!.street,
                "zip":   customer.address!.zip
            ]

            user["address"] = address
        }

【问题讨论】:

  • 你为什么首先使用字典?您应该为这样的数据创建数据模型。为您的数据创建一个具有您可以设置的属性的结构会更好(并且更容易......并且更安全)。 Swift 不是 JavaScript。别再这样对待它了。
  • @Fogmeister 我确实有数据模型,但这只是在我向服务器发送请求之前。

标签: swift dictionary swift2 nsdictionary


【解决方案1】:

问题是您试图在字典中添加不同的类型值。如果要添加不同类型的值,请使用 AnyAny 可以表示任何类型的实例。

例如:

var user: [String: Any] = [
  "id": "dd",
  "name" : "ddd"
]

let address = ["street": "ss","zip": "124115"]

user["address"] = address

【讨论】:

  • 是的,就是这样。
【解决方案2】:

只需将您的用户 Dictionary decalration 更改为 var 而不是常量,然后使用 subscript 通过键添加新值。

var user: [String: AnyObject] = [
    "id": id,
    "name" : name
]
user["address"] = address

【讨论】:

  • 我收到一个错误“无法通过下标分配:下标只能获取”
  • @Prabhu 确保 user 字典被声明为 var(正如 Nirav D 所写)而不是 let
  • 是的,我把它改成了var。
  • @Prabhu 将其更改为var 后现在可以使用吗?
猜你喜欢
  • 2015-05-01
  • 2010-11-04
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2015-02-24
相关资源
最近更新 更多