Necesito verificar si un objeto no es de cierto tipo. Sé que en Kotlin es posible comprobar si un tipo no lo es usando !is . Me preguntaba si había un equivalente en Swift, o una solución alternativa que podría usar si no es posible.
Ejemplo en Kotlin:
Supongamos que animals es una interfaz de diferentes animales y hay clases que la implementan, como Cat , Dog , Horse , Spider , etc.:
var animals = listOf<Animals>(Horse(), Cat(), Dog(), Spider()) var chosenAnimals = animals.filter { it !is Spider }Usando sintaxis rápida, esta es una forma de hacer esto
let animals: [Animals] = [Horse(), Cat(), Dog(), Spider()] var chosenAnimals = animals.filter { type(of: $0) != Spider.self }alternativamente
var chosenAnimals = animals.filter { !($0 is Spider) }O bien, puede crear su propia función isNot, como esta:
extension Animal { func isNot<T: Animal>(_ type: T.Type) -> Bool { return !(self is T) } } print(Horse().isNot(Fish.self)) // prints true print(Horse().isNot(Horse.self)) // prints falsepuedes usar esto:
var chosenAnimals = animals.filter({!($0 is Spider)})