我在尝试将Set
转换为[String]
时遇到问题。我正在使用Eureka表格并将我的价值观视为:
let values = form.values()
这是[String:Any]
。
我的领域是:
values["field_name"]
如果我使用以下内容,我会得到nil:
var incidents : [String]?
if let incidentRow = values["field_name"]! {
incidents = incidentRow as? [String]
}
答案 0 :(得分:2)
如果你确实有一个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)
}
答案 1 :(得分:1)
您可以使用Optional.map(_:)
:
{{1}}