我正在尝试创建一个特定的数据结构,如下面Swift中所述。
[{"productId":1,"qty":3},{"productId":2,"qty":1},{"productId":3,"qty":5},{"productId":4,"qty":30},{"productId":5,"qty":13}]
有人可以指导我如何实现它......我需要添加和删除数据结构。
提前致谢.....
答案 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")