我正在尝试将AnyObject数组中的对象与特定字符串进行匹配,然后我沿着flatmap的路径返回一个非可选数组,但仍然可以返回。
typealias PropertyList = [AnyObject]
var savedProgram: PropertyList?
var savedProgramUnwrapped = savedProgram.flatMap{ $0 }
savedProgram
savedProgramUnwrapped
print(savedProgramUnwrapped)
print(savedProgram)
为什么savedProgram和savedProgramUnwrapped仍然看起来一样?
答案 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
有效,但您的元素无论如何都是非可选的