无法将类型Set转换为Array

时间:2017-01-01 12:08:34

标签: arrays swift

我发现了几个与此相关的线程,但是在我的案例中没有一个解决方案有帮助。我有formValues类型的数组[String: Any?]。然后,我需要从Images键获取值,该值适用于formvalues["Images"]。然后我将其转换为Data数组。返回以下错误:Could not cast value of type 'Swift.Set<Foundation.Data>' to 'Swift.Array<Foundation.Data>'

let formvalues = self.form.values()
let images = formvalues["Images"] as! [Data]

2 个答案:

答案 0 :(得分:3)

错误消息非常明确:密钥Images的值为Set,因此将其转换为集合:

let images = formvalues["Images"] as! Set<Data>

错误消息无法将“Foo”类型的值转换为“Bar”仅表示:

  • 实际预期类型为Foo
  • 您认为这是Bar
  • 信任编译器并使用预期类型

PS:如果要求images为数组,则必须明确创建一个。

let imageSet = formvalues["Images"] as! Set<Data>
let images = Array(imageSet)

答案 1 :(得分:0)

假设您的formvalues是字典:

let formvalues: [String: Any] = self.form.values()
var images: [Data]?

switch formvalues["Images"] {
case let set as Set<Data>:
    images = Array(set)
case let array as [Data]:
    images = array
default:
    images = nil
}