Swift:可选数组的快捷展开

标签 swift

假设我们定义了一个可选数组:

var arrayOfOptionals: [String?] = ["Seems", "like", "an", nil, "of", "optionals"]

我可以用一种简短的方式强制解包:var arrayForCrash = arrayOfOptionals.map { $0! }

但这会使应用程序崩溃,是否有任何其他捷径​​(无需显式解包)如何解包可选数组?

最佳答案

此解决方案将为您提供一个新数组,其中所有值都已展开并过滤掉所有 nil。

swift 4.1:

let arrayOfOptionals: [String?] = ["Seems", "like", "an", nil, "of", "optionals"]
let arrayWithNoOptionals = arrayOfOptionals.compactMap { $0 }

swift 2.0:

let arrayOfOptionals: [String?] = ["Seems", "like", "an", nil, "of", "optionals"]
let arrayWithNoOptionals = arrayOfOptionals.flatMap { $0 }

swift 1.0:

let arrayOfOptionals: [String?] = ["Seems", "like", "an", nil, "of", "optionals"]
let arrayWithNoOptionals = arrayOfOptionals.filter { $0 != nil }.map { $0! }

关于Swift:可选数组的快捷展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589605/

相关文章:

ios - 检索自定义单元格内的 textfield.text

Swift 2.0 获取镜像父类(super class)属性

ios - 将 Swift 字典作为 AnyObject 返回

iOS - 自己的 VoIP Asterisk 客户端应用程序

ios - 如何在 URLSession 数据任务中设置变量?

swift - CollectionView 中的异步 GET 图像

swift - 如何关闭模态视图之外的 modalView

ios - 我的应用程序中需要核心数据吗?

ios - 无法将 PNG 图像加载为 UIImage

ios - 使用 AVAssetExportSession 导出 MP3