我正在使用此代码创建一个新的颜色数组。一切都很好。
但我不想强制解包$0.color!
,因为有时当价值为零时,应用会崩溃。
如何将其作为选项保留?如果我只是删除!
我收到错误,要求我打开它。
let newArray = oldDict.map{ UIColor(hexString: $0.color!)}
答案 0 :(得分:6)
您应该使用compactMap
而不是map
,因为compactMap
不返回nil的元素,并且在封闭中只使用guard let语句展开颜色
let newArray = oldDict.compactMap {
guard let color = $0.color else {
return nil
}
return UIColor(hexString: color)
}
答案 1 :(得分:2)
以下是一些方法:
let newArray1 = oldDict
.filter({ $0.color != nil })
.map({ UIColor(hexString: $0.color! )})
let newArray2 = oldDict
.flatMap({ $0.color })
.map({ UIColor(hexString: $0) })