检查对象是否不是 swift 类型的

use*_*839 9 iphone ios swift

我需要检查一个对象是否不是某种类型。我知道在 Kotlin 中可以通过使用!is. 我想知道 Swift 中是否有等价物,或者如果不可能的话我可以使用的解决方法?

Kotlin 中的示例:

假设动物是不同的动物的接口并有实现它的类,例如CatDogHorseSpider,等:

var animals = listOf<Animals>(Horse(), Cat(), Dog(), Spider())
var chosenAnimals = animals.filter { it !is Spider }
Run Code Online (Sandbox Code Playgroud)

Joa*_*son 14

使用 swift 语法这是做到这一点的一种方法

let animals: [Animals] = [Horse(), Cat(), Dog(), Spider()]
var chosenAnimals = animals.filter { type(of: $0) != Spider.self }
Run Code Online (Sandbox Code Playgroud)

或者

var chosenAnimals = animals.filter { !($0 is Spider) }
Run Code Online (Sandbox Code Playgroud)