2017-01-01 18 views
-2

我發現了幾個與此相關的線程,但是沒有一個解決方案對我有幫助。我有一個類型爲[String: Any?]的數組formValues。然後我需要從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] 

回答

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) 
+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 
} 
相關問題