Cómo coaccionar una serie Swift de opciones (muy bien)

Usando Swift 2.1

Estoy buscando una buena forma de asignar una matriz de types no opcionales a una matriz de tipo opcional, donde el tipo es el mismo. Aquí hay algo de lo que he intentado:

var foos: [Int?] = [] let bars: [Int] = [] foos = bars // Error: Cannot assign value of type '[Int]' to type '[Int?]' foos = bars as [Int?] // Error: Cannot convert value of type '[Int]' to type '[Int?]' in coercion foos = bars as? [Int?] // Error: 'Int?' is not a subtype of 'Int' foos = bars.map { $0 } // Works but I think there must be a better way 

Asignar un tipo no opcional a un tipo opcional funciona bien en Swift. No entiendo por qué esto tampoco funcionaría para una matriz.

 var foo: Int? = nil let bar: Int = 0 foo = bar // Works fine 

¿Algunas ideas?

Puedes usar :
var array3: [Int] = []

var array4: [AnyObject] = []

array4 = array3

Puede hacer que la syntax sea un poco más agradable usando un par de funciones genéricas que se verán como casting de tipo:

 var foos: [Int?] = [] let bars: [Int] = [] let fums: [Int64?] = [] func CastArray<T, U>(array:[T?]) -> [U?] { return array.map({ $0 as! U? }) } func CastArray<T, U>(array:[T]) -> [U?] { return array.map({ $0 as? U }) } foos = CastArray(bars) foos = CastArray(fums)