如何在swift ios中创建指定的数据结构?
Posted
技术标签:
【中文标题】如何在swift ios中创建指定的数据结构?【英文标题】:How to create the specified data structure in 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 使用? 【参考方案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")
【讨论】:
以上是关于如何在swift ios中创建指定的数据结构?的主要内容,如果未能解决你的问题,请参考以下文章