Разбор массива с разделителями в значения ключа - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь безопасно проанализировать массив по значениям ключа, используя Swift 5. Вот пример -

["BirthDate=1976-09-11", "Name=Smith", "Status=Alive"]

или, возможно, использовать 2D-массив, если это поможет после использования split(separator: "=") выше-

[["BirthDate", "1976-09-11"], ["Name", "Smith"], ["Status", "Alive"]]

Теперь это становится Array<Substring>.Я думал о Decodable и преобразовании этого массива в словарь , но это никуда меня не привело.

1 Ответ

2 голосов
/ 19 сентября 2019

Вы можете использовать уменьшить (в: _:) :

let array = ["BirthDate=1976-09-11", "Name=Smith", "Status=Alive"]

let dictionary = array.reduce(into: [String: Any]()) { (result, current) in
    let separated = current.components(separatedBy: "=")
    guard separated.count == 2 else { return }
    result[separated[0]] = separated[1]
}

Вывод:

$> ["Status": "Alive", "Name": "Smith", "BirthDate": "1976-09-11"]

РЕДАКТИРОВАТЬ: Как указано @LeoDabus , первая строка может быть написана let dictionary = array.reduce(into: [:]) { ... }, затем dictionary будет [AnyHashable : Any], или это может быть let dictionary = array.reduce(into: [String: String]()) { ... }, а dictionary будет [String: String]

...