如何使用compactMap过滤掉属性中可能的nil值,这样我就不必预测nil属性即可返回对象。
目前我有
let objects: [Object] = anotherObject.array.compactMap ({
return Object(property: $0.property!)
})
我想要的是一些防护措施或选项,以过滤掉这些可能具有零属性的对象。例如,如果$ 0.property为nil
答案 0 :(得分:1)
您可以这样做:
let objects: [Object] = anotherObject.array.compactMap {
return $0.property == nil ? nil : $0
}
或使用filter
:
let objects: [Object] = anotherObject.array.filter { $0.property != nil }
答案 1 :(得分:1)
您仍然可以使用Array.compactMap
带有if语句
anotherObject.array.compactMap { object in
if let property = object.property {
return Object(property: property)
}
return nil
}
带有保护声明
anotherObject.array.compactMap {
guard let property = $0.property else { return nil }
return Object(property: property)
}
三元运算符示例
anotherObject.array.compactMap { object in
object.property == nil ? nil : Object(property: object.property!)
}