我有array
个自定义对象有2种类型。我还有TableView
,它显示了数组中的对象。我需要选择tableViewCell
并检查,如果元素已经在数组中 - 将其从数组中删除,否则将其添加到数组中。我知道,有检查array.contains(element)
的方法,但我的数组看起来像[Any]
,并且它没有这种方法。
我尝试使用for-in
进行检查,但这不是一个好方法。
我该怎么做?
let a: Int = 5
let b: String = "3"
let array: [Any] = [a, b]
答案 0 :(得分:2)
您可以将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