2017-01-01 2 views
-2

Я нашел несколько тем, связанных с этим, однако ни одно из решений не помогло в моем случае. У меня есть массив formValues типа [String: Any?]. Затем мне нужно получить значение из ключа Images, который отлично работает с formvalues["Images"]. Затем я отбрасываю массив Data. Это следующая ошибка возврата: Could not cast value of type 'Swift.Set<Foundation.Data>' to 'Swift.Array<Foundation.Data>'Невозможно использовать тип Set to Array

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

ответ

3

Сообщение об ошибке довольно ясно: Значение ключа Images является Set так брось в комплекте:

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

сообщение об ошибке МОГ не отлитое значение типа «Foo» в «Bar» просто означает:

  • Фактический ожидаемый тип Foo
  • Вы думаете, что это Bar
  • Trust компилятор и использовать тип ожидается

PS: Если images требуется, чтобы массив, вы должны создать в явном виде ,

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

Мне нужно, чтобы бросить его в массив не набор, так как он уже есть набор –

+0

Это не представляется возможным литой Установите массив, если вы нужен массив, который вы должны ** создать ** массив ** из ** набора – vadian

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 
}