Отфильтровать объекты в массиве в Swift - PullRequest
0 голосов
/ 29 января 2020

У меня есть var campaigns: [Campaign] = [] Объекты кампании имеют свойство published. Я хотел бы отобразить массив и отфильтровать неопубликованные кампании, чтобы в результате получился массив, содержащий только опубликованные кампании, которые я пробовал ниже, но, конечно, получаю 'nil' is incompatible with return type 'Campaign'

self.campaigns = self.campaigns.map({ (campaign) -> Campaign in
                        if campaign.published == 1 {
                            return campaign
                        } else {
                            return nil
                        }
                    })

Любой, кто знает решение этой мини-проблемы? Спасибо; -)

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Чтобы сделать это по-своему, вам нужно будет использовать compactMap, чтобы отбросить ноль ответов, однако вам будет лучше просто использовать filter

campaigns = campaigns.filter{$0.published == 1}
0 голосов
/ 29 января 2020

Согласовано с ответом @flanker Используйте compactMap, который возвращает массив, содержащий ненулевые результаты вызова данного преобразования для каждого элемента этой последовательности.

self.campaigns = self.campaigns.compactMap({ $0.published == 1 ? $0 : nil })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...