使用不同的对象检查数组中的元素

时间:2018-05-04 06:31:54

标签: ios arrays swift

我有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 :(得分:2)

您可以将Any投射到IntString类型,然后使用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