Свифт словарь для массива словарей - PullRequest
0 голосов
/ 04 июля 2018

У меня есть словарь строк и Bools, как упрощенный здесь:

var dict: [String : Bool] = ["A": true, "B": false, "C": true]

Который я хотел бы преобразовать в массив словарей, как показано ниже (т.е. и ключи, и значения dict станут значениями внутри другого словаря, но у каждого будет новый словарный ключ "id" и "enabled":

var array = [["id": "A", "enabled": true], ["id": "B", "enabled": false], ["id": "C", "enabled": true]]

Мне не удалось найти решение этой проблемы. Какой лучший подход?

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

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Используйте map для пар ключ / значение:

 let dict: [String : Bool] = ["A": true, "B": false, "C": true]

 let array = dict.map { key, value in ["id": key, "enabled": value] }

 print(array)

Выход:

[["id": "C", "enabled": true], ["id": "B", "enabled": false], ["id": "A", "enabled": true]]

Результатом map является массив. В данном случае это [[String : Any]] - массив словарей с String ключами и Any значениями. Выполнение map в словаре выполняет замыкание для каждой пары ключ / значение словаря и возвращает значение для результирующего массива. В этом случае мы возвращаем словарь [String : Any], который мы строим из key и value.

0 голосов
/ 04 июля 2018

Swift 4.0

Вы должны взять массив словаря [String : Any].

var dict: [String : Bool] = ["A": true, "B": false, "C": true]

var array: [[String : Any]] = []

for (key,value) in dict {
    array.append(["id" : key, "enabled" : value])
}

print(array) // [["id": "C", "enabled": true], ["id": "B", "enabled": false], ["id": "A", "enabled": true]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...