Creating an extension to filter nils from an Array in Swift

前端 未结 7 653
难免孤独
难免孤独 2020-11-29 04:12

I\'m trying to write an extension to Array which will allow an array of optional T\'s to be transformed into an array of non-optional T\'s.

e.g. this could be writte

7条回答
  •  遥遥无期
    2020-11-29 04:25

    As of Swift 2.0, you don't need to write your own extension to filter nil values from an Array, you can use flatMap, which flattens the Array and filters nils:

    let optionals : [String?] = ["a", "b", nil, "d"]
    let nonOptionals = optionals.flatMap{$0}
    print(nonOptionals)
    

    Prints:

    [a, b, d]
    

    Note:

    There are 2 flatMap functions:

    • One flatMap is used to remove non-nil values which is shown above. Refer - https://developer.apple.com/documentation/swift/sequence/2907182-flatmap

    • The other flatMap is used to concatenate results. Refer - https://developer.apple.com/documentation/swift/sequence/2905332-flatmap

提交回复
热议问题