Swift:flatmap仍然返回可选

时间:2016-07-05 12:17:49

标签: swift

我正在尝试将AnyObject数组中的对象与特定字符串进行匹配,然后我沿着flatmap的路径返回一个非可选数组,但仍然可以返回。

typealias PropertyList = [AnyObject]

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

savedProgram
savedProgramUnwrapped
print(savedProgramUnwrapped)
print(savedProgram)

为什么savedProgram和savedProgramUnwrapped仍然看起来一样?

2 个答案:

答案 0 :(得分:2)

flatMap可以从数组中删除可选值。您有一个可选数组,而不是一个可选数组。这很好用:

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

答案 1 :(得分:0)

因为flatMap方法在您的情况下不执行任何操作。此方法对数组的Element有效,但您的元素无论如何都是非可选的

相关问题