CompactMap для фильтрации объектов с нулевыми свойствами - PullRequest
1 голос
/ 26 апреля 2019

Как отфильтровать возможные значения nil в свойствах с помощью compactMap, чтобы мне не приходилось прогнозировать свойство nil для возврата объекта.

В настоящее время у меня есть

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

Что мне хотелось бы, так это какое-нибудь охранное состояние или возможность отфильтровывать эти объекты, которые могут иметь свойство, которое может быть равно нулю. Например, если $ 0.property равен nil

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Вы все еще можете использовать 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 голос
/ 26 апреля 2019

Вы можете сделать это:

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

Или использовать filter:

let objects: [Object] = anotherObject.array.filter { $0.property != nil }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...