Xcode заставляет меня использовать содержит (где :) вместо содержит () - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу проверить, содержался ли в массиве элемент или нет, поэтому я использую это так:

let fItem = FilterItem(key: String(describing: key), value: valueStr)
if self.filter?.filters?.contains(fItem){
    //remove the item if contains, append if not
}

Для получения дополнительной информации self.filter?.filters? - это массив:

var filters: [FilterItem]? = []

И FilterItem - это структура:

struct FilterItem {
    var key: String;
    var value: String;
}

Но XCode заставил меня использовать contains(where:..) вместо contains() с ошибкой: Missing argument label 'where:' in call. Почему?

1 Ответ

1 голос
/ 19 февраля 2020

Нельзя использовать contains(_), поскольку массив объектов FilterItem не соответствует протоколу Equatable. Этот вопрос и ответы на него должны помочь объяснить это. По сути, элементы массива нельзя напрямую сравнивать друг с другом с помощью ==, поэтому они не соответствуют Equatable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...