CompactMap用于过滤具有nil属性的对象

问题描述 投票:0回答:2

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

目前我有

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

我想要的是一些保护标准或选项来过滤掉这些可能具有可能为零的属性的对象。例如,如果$ 0.property为零

arrays swift collections
2个回答
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!)
}

1
投票

你可以这样做:

let objects: [Object] = anotherObject.array.compactMap {
    return $0.property == nil ? nil : $0
}

或者使用filter

let objects: [Object] = anotherObject.array.filter { $0.property != nil }
© www.soinside.com 2019 - 2024. All rights reserved.