【问题标题】:How to create the specified data structure in swift ios?如何在swift ios中创建指定的数据结构?
【发布时间】:2018-06-07 09:00:53
【问题描述】:

我正在尝试在 Swift 中创建如下指定的特定数据结构。

[{"productId":1,"qty":3},{"productId":2,"qty":1},{"productId":3,"qty":5},{"productId":4,"qty":30},{"productId":5,"qty":13}]

谁能指导我如何实现它.....我需要添加和删除数据结构。

提前谢谢.....

【问题讨论】:

  • 您是否打算将其作为 JSON 使用?

标签: ios swift swift3 nsdictionary


【解决方案1】:

这是一个Array of Dictionaries

这样定义:

var dataStructure = [[String: Any]]()

添加一些东西:

var newData = [String: Any]()
newData["productId"] = 1
newData["qty"] = 1
dataStructure.append(newData)

删除:

dataStructure.remove(at: indexYouWantTodeleteInInt)

【讨论】:

    【解决方案2】:

    在swift中称为字典。

    声明部分可以如下:

    var params: [String:Any]
    

    我们也可以这样使用:

    var params: [String:Any] = ["user_id" : AppConfiguration.current.user_id]
    

    现在要在其中添加键值对,您可以执行以下操作:

        params["form_id"] = form_id!
        params["parent_category_id"] = id 
        params["device_token"] = getDeviceToken()
        params["app_version"] = APP_VERSION
        params["app_device_type"] = originalDeviceType
    

    删除键值对:

        params.removeValue(forKey: "parent_category_id")
    

    更新特定键的任何值:

        params.updateValue("10", forKey: "form_id")
    

    如果上面的键已经存在,它会更新值,如果没有,那么它会在字典中添加一个新键

    上面解释的部分是字典。现在您需要将数据结构作为字典数组,因此您需要声明为

    var params: [[String:Any]]
    

    您可以对数组执行所有可以执行的操作,但您在特定索引处获得的值将是我上面解释过的字典类型。

    希望这有助于您了解什么是字典以及什么是字典数组。

    在你的情况下,你也可以写 [String: Int] 而不是 `[String:Any]' 但它会限制你只有关于键的整数值。

    【讨论】:

      【解决方案3】:

      Swift 开发人员通常使用 Structs 来从 JSON 响应创建数据结构。从 Swift 4 开始,JSON 解析变得非常容易。感谢 Codable 协议。

      根据上面给出的答案,您可以创建类似的内容。

      MyStruct.Swift
      
      import Foundation
      
      typealias MyStruct = [[String: Int]]
      

      然后就可以调用下面的方法进行解析了。

         let myStruct = try? JSONDecoder().decode(MyStruct.self, from: jsonData)
      

      您可以通过使用它来增加价值。

      var newProduct = [String: Any]()
      newProduct["productId"] = 941
      newProduct["qty"] = 2
      myStruct.append(newProduct)
      

      删除数据

      myStruct.remove(at:"Some index")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-04
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多