Конвертировать дополнительно (установить (["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)