如何在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中创建指定的数据结构?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在应用程序中创建核心数据实体 [关闭]

如何在 ios swift 中创建 json 对象

如何在 Swift iOS 中创建一个通用的弹出视图控制器

如何在 Swift IOS 中创建具有多个堆栈视图的可滚动堆栈视图

如何使用 Swift 4 在 iOS 9+ 中创建瀑布布局

如何使用 Swift 在 iOS 应用中创建热点网络