Swift:flatmap仍然返回可选
问题描述:
我试图将我的AnyObject数组中的对象与特定的字符串进行匹配,并且我沿着flatmap的路径返回了非可选数组,但仍然可选返回。Swift:flatmap仍然返回可选
typealias PropertyList = [AnyObject]
var savedProgram: PropertyList?
var savedProgramUnwrapped = savedProgram.flatMap{ $0 }
savedProgram
savedProgramUnwrapped
print(savedProgramUnwrapped)
print(savedProgram)
为什么savedProgram和savedProgramUnwrapped仍然看起来相同?
答
flatMap
可以从数组中移除可选值。你有一个可选的数组,而不是一组可选项。这工作正常:
let arrayOfOptionals: [Int?] = [1, nil, 5, 2, nil]
let arrayOfNumbers = arrayOfOptionals.flatMap { $0 }
print(arrayOfNumbers) // [1, 5, 2]
答
因为flatMap
方法在你的情况下什么都不做。此方法对阵列的Element
有影响,但您的元素无论如何都是非可选的