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

fab*_*abb 1 arrays swift

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

Ant*_*nio 5

您可以分两步完成:

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

码:

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

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

let finalArray: [AnyObject] = arrayOfNonOptionals.map( { $0! } )
Run Code Online (Sandbox Code Playgroud)

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

let finalArray = arrayOfOptionals.filter( { $0 != nil} ).map( { $0! } )
Run Code Online (Sandbox Code Playgroud)