swift - 将 Optional(Set( ["6", "14"])) 转换为 [String]

标签 swift eureka-forms

我在尝试将 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]
}

最佳答案

如果你真的有一个 Set,正如输出 Optional(Set(["6", "14"])) 所建议的那样,那么它就不是一个数组(这就是 [String]) 是。你的测试是?因此,[String] 注定要失败,因此您将得到 nil。您不能将一种类型的事物转换(使用as)它不是的另一种类型。

相反,您必须强制从 Set 到 Array。这样做:

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

关于swift - 将 Optional(Set( ["6", "14"])) 转换为 [String],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50138290/

相关文章:

ios - 在 ButtonRow 中显示值

ios - 如何在 Swift 中正确声明自定义对象数组?

ios - 在字符串 : Swift 中的特定字符之后插入字符

ios - 让自动完成快速工作

Swift Eureka - 自定义行 "cannot convert to expected argument type BaseRow"

ios - Eureka MultipleSelectorRow

ios - 获取从服务器下载的一些文本(?)文档

c# - TouchMove 事件在 xamarin ios 中结束得如此之快

ios - Eureka 通过标签获取 SelectableSection

arrays - Type [Node] 不符合 Swift 4.0 中的 'Equatable'?