2016-07-05 83 views
0

我试图将我的AnyObject数组中的对象与特定的字符串进行匹配,并且我沿着flatmap的路径返回了非可选数组,但仍然可选返回。Swift:flatmap仍然返回可选

typealias PropertyList = [AnyObject] 

var savedProgram: PropertyList? 
var savedProgramUnwrapped = savedProgram.flatMap{ $0 } 

savedProgram 
savedProgramUnwrapped 
print(savedProgramUnwrapped) 
print(savedProgram) 

为什么savedProgram和savedProgramUnwrapped仍然看起来相同?

回答

2

flatMap可以从数组中移除可选值。你有一个可选的数组,而不是一组可选项。这工作正常:

let arrayOfOptionals: [Int?] = [1, nil, 5, 2, nil] 
let arrayOfNumbers = arrayOfOptionals.flatMap { $0 } 
print(arrayOfNumbers) // [1, 5, 2] 
0

因为flatMap方法在你的情况下什么都不做。此方法对阵列的Element有影响,但您的元素无论如何都是非可选的