Как преобразовать массив String в словарь в Swift?

У меня есть string array, и я хочу преобразовать его в Dictionary, используя arrayindex в качестве ключа в Dictionary.

array = ["string1", "string2", "string3"]

преобразовать в:

dictionary = [0 : "string1", 1 : "string2", 2 : "string3"]
let dictionary = array.enumerated().reduce(into: [:]) { $0[$1.offset] = $1.element }
Leo Dabus 27.09.2018 04:50

вы также можете использовать инициализатор Dictionary (uniqueKeysWithValues ​​:) и передать новый массив из вашего массива, перечисленного let dictionary = Dictionary(uniqueKeysWithValues: Array(array.enumerated()))

Leo Dabus 27.09.2018 04:56

спасибо, Лео, я ценю вашу помощь, как я могу преобразовать словарь в [String: Any], ваше решение вернет [Int: String], мне нужно, чтобы ключ словаря был строкой, так как это передается в базу данных Firebase и выдает ошибку, поскольку не ожидает Int в качестве ключа

Roggie 27.09.2018 04:59
let dictionary = array.enumerated().reduce(into: [:]) { $0[String($1.offset)] = $1.element }
Leo Dabus 27.09.2018 05:02

Почему вы хотите, чтобы тип значения был Any, если массив содержит только строки? вам, вероятно, следует использовать [String:String]

Leo Dabus 27.09.2018 05:04

Если вам действительно нужен [String: Any], вам просто нужно преобразовать элементы в Any let dictionary = array.enumerated().reduce(into: [:]) { $0[String($1.offset)] = $1.element as Any }.

Leo Dabus 27.09.2018 05:06

другой подход для получения [String:String] с использованием инициализатора словаря let dict = Dictionary(uniqueKeysWithValues: array.enumerated().map{(String($0),$1)})

Leo Dabus 27.09.2018 05:11

для [String:Any] с использованием инициализатора словаря let dict = Dictionary(uniqueKeysWithValues: array.enumerated().map{(String($0),$1 as Any)})

Leo Dabus 27.09.2018 05:12

Большое спасибо @LeoDabus, это действительно помогло. Данные теперь в формате, который мне нужен для загрузки в Firebase DB - еще раз спасибо.

Roggie 27.09.2018 05:12

Я обновил ссылку на дублированный вопрос, если вы хотите проверить, что расширение теперь также возвращает [String:Element] для Swift 4.

Leo Dabus 27.09.2018 05:34
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
10
32
0

Другие вопросы по теме