Как создать указанную структуру данных в Swift IOS? - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь создать определенную структуру данных, как указано ниже в Swift.

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

Может ли кто-нибудь подсказать мне, как этого добиться ..... Мне нужно добавить и удалить структуру данных.

Заранее спасибо .....

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Он называется словарём в 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] ', но это ограничит вас только целочисленными значениями по отношению к ключам.

0 голосов
/ 07 июня 2018

Разработчики 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")
0 голосов
/ 07 июня 2018

Это Array of Dictionaries.

Определите это так:

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

Чтобы добавить что-то:

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

Для удаления:

dataStructure.remove(at: indexYouWantTodeleteInInt)
...