Конвертировать дополнительно (установить (["6", "14"])) в [String] - PullRequest
0 голосов
/ 02 мая 2018

У меня возникли проблемы при попытке преобразовать Set в [String]. Я использую форму Eureka и получаю свои значения как:

let values = form.values()

, что [String:Any].

Мое поле:

values["field_name"]

Если я использую следующее, я получаю ноль:

var incidents : [String]?

if let incidentRow = values["field_name"]! {
    incidents = incidentRow as? [String]
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вы можете использовать Optional.map(_:):

let incidents = values["field_name"].map(Array.init)
0 голосов
/ 02 мая 2018

Если у вас действительно есть Set, как показывает вывод Optional(Set(["6", "14"])), то это не Массив (что и есть [String]). Таким образом, ваш тест as? [String] обречен на провал, и вы получите nil. Вы не можете разыграть (используя as) вещь одного типа к другому типу, который не является.

Вместо этого вы должны принудительно из Set to Array. Сделайте это так:

if let theSet = values["field_name"] as? Set<String> {
    incidents = Array(theSet)
}
...