CompactMap筛选具有nil属性的对象

时间:2019-04-26 13:21:48

标签: arrays swift collections

如何使用compactMap过滤掉属性中可能的nil值,这样我就不必预测nil属性即可返回对象。

目前我有

let objects: [Object] = anotherObject.array.compactMap ({
                        return Object(property: $0.property!)
 })

我想要的是一些防护措施或选项,以过滤掉这些可能具有零属性的对象。例如,如果$ 0.property为nil

2 个答案:

答案 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!)
}