如何在swift ios中创建指定的数据结构?

时间:2018-06-07 09:00:54

标签: ios swift swift3 nsdictionary

我正在尝试创建一个特定的数据结构,如下面Swift中所述。

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

有人可以指导我如何实现它......我需要添加和删除数据结构。

提前致谢.....

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

它在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]'但它会限制你只有关于键的整数值。

答案 2 :(得分:1)

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")