如何将[AnyObject?]转换为[AnyObject]

时间:2014-10-10 10:41:09

标签: arrays swift

我需要做一些简单的事情,如将[AnyObject?]转换为[AnyObject]。因此,数组中的选项应该被解包,并且如果nil被踢出数组。在Swift中有一个简单的方法吗?

2 个答案:

答案 0 :(得分:5)

您可以分两步完成:

  • 过滤数组以包含所有非nil
  • 的值
  • 通过将每个可选项转换为非可选
  • 来映射生成的数组

代码:

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

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

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

当然,您可以将过滤器和地图组合成一个语句:

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

答案 1 :(得分: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)")