Проверить элемент в массиве с разными объектами - PullRequest
0 голосов
/ 04 мая 2018

У меня есть array с пользовательскими объектами 2 типов. Также у меня есть TableView, который показывает объекты из массива. Мне нужно выбрать tableViewCell и проверить, если элемент уже в массиве - удалить его из массива, в противном случае добавить его в массив. Я знаю, что есть метод проверки array.contains(element), но мой массив выглядит как [Any], и у него нет этого метода.

Я пытаюсь проверить это с помощью for-in, но это не очень хорошее решение.

Как я могу это сделать?

let a: Int = 5
let b: String = "3"
let array: [Any] = [a, b]

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете разыграть Any на Int или String тип и просто использовать array.contains

array.contains {
    if let intValue = $0 as? Int {
        return intValue == 3
    } else if let stringValue = $0 as? String {
        return stringValue == "3"
    }
    return false
}

ИЛИ используйте это расширение ( Swift 4 ):

extension Array where Element: Any {
    func contains<T: Equatable>(_ element: T) -> Bool {
        return contains {
            guard let value = $0 as? T else { return false }
            return value == element
        }
    }
}


array.contains("3") // true for your example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...