2014-10-10 82 views
1

我需要做一些簡單的操作,將[AnyObject?]轉換爲[AnyObject]。因此數組中的可選項應該被解包,並且如果nil被踢出數組。 Swift中有這樣一個簡單的方法嗎?如何將[AnyObject?]轉換爲[AnyObject]

回答

5

可以做到這一點在2個步驟:

  • 濾波器陣列到包括不是零
  • 通過將每個可選成非可選

所得陣列映射的所有值代碼:

let arrayOfOptionals: [AnyObject?] = [1, 2, nil, 3, nil, 4] 

let arrayOfNonOptionals: [AnyObject?] = arrayOfOptionals.filter({ $0 != nil}) 

let finalArray: [AnyObject] = arrayOfNonOptionals.map({ $0! }) 

當然,你可以將過濾器和地圖組合成一個單一的s tatement:

let finalArray = arrayOfOptionals.filter({ $0 != nil}).map({ $0! }) 
1

最簡短的回答是

let hetro1 : [AnyObject?] = ["a", nil, 2, 3.4, nil]; 
var hetro2 : [AnyObject] = []; 

for val in hetro1{ 
    if((val) != nil){  
     hetro2.append(val!) 
    } 
} 
println("hetro1 \(hetro1)") 
println("hetro2 \(hetro2)") 
相關問題