安全地展开可选值

J.D*_*Doe 2 ios swift

我正在使用此代码创建一个新的颜色数组.一切都很好.

但是我不想强制解包,$0.color!因为有时候应用程序崩溃时值为零.

我如何将其作为可选项?如果我只是删除!我收到一个错误,要求我打开它.

let newArray = oldDict.map{ UIColor(hexString: $0.color!)}
Run Code Online (Sandbox Code Playgroud)

Raj*_*lak 6

您应该使用compactMap而不是map,因为compactMap不返回nil和闭包中的元素只需使用guard let语句展开颜色

let newArray = oldDict.compactMap {
    guard let color = $0.color else {
        return nil
    }

    return UIColor(hexString: color)
}
Run Code Online (Sandbox Code Playgroud)