2016-07-05 89 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有影響,但您的元素無論如何都是非可選的