Конвертировать дополнительно (установить (["6", "14"])) в [String]

У меня возникли проблемы при попытке преобразовать 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 ответа

Решение

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

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

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

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

let incidents = values["field_name"].map(Array.init)
Другие вопросы по тегам