【问题标题】:Add an array to a dictionary将数组添加到字典
【发布时间】:2021-10-29 22:53:01
【问题描述】:

我想在参数中添加更多项,但是 for 循环会覆盖现有数据。

如何使用循环向参数添加更多项目?

var parameters: [String: Any] = [:]
let array = [1111,1112,1113,1114]
for product in array{
            parameters["line_items"] = [
            ["product_id": product, "quantity": 1]
        ]
        }

感谢您的建议

【问题讨论】:

    标签: arrays swift loops dictionary


    【解决方案1】:

    您需要将字典数组分配给line_items 键。您可以在products 上使用map 轻松做到这一点。

    var parameters: [String: Any] = [:]
    let products = [1111,1112,1113,1114]
    parameters["line_items"] = products.map { product in ["product_id": product, "quantity": 1]}
    
    print(parameters)
    

    【讨论】:

      【解决方案2】:

      一般来说,您应该先为line_items 键创建数组,然后将其分配给字典:

      var lineItems = [Any]()
      for product in array{
          lineItems.append(
              ["product_id": product, "quantity": 1]
          )
      }
      parameters["line_items"] = lineItems
      

      但正如 Dávid Pásztor 所说,您可以只做一个map

      parameters["line_items"] = array.map {
          ["product_id": $0, "quantity": 1]
      }
      

      如果您有一个包含此数据的 Codable 结构,

      struct LineItems : Codable {
          let lineItems: [Product]
      }
      
      struct Product : Codable {
          let productId: Int
          let quantity: Int
      }
      

      我还建议您使用来自this answerDictionaryEncoder 来创建整个字典。

      let encoder = DictionaryEncoder()
      encoder.keyEncodingStrategy = .convertToSnakeCase
      let parameters = try encoder.encode(object)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        • 2023-03-10
        • 1970-01-01
        • 2022-11-15
        相关资源
        最近更新 更多