Вот способ проверить, является ли переменная экземпляром класса:
object_isClass(type(of: yourVariable))
Используется тип (из:) , который возвращает динамический тип переменной.
Вот несколько тестов:
let a = 1
let b = ("a", 2.3)
enum MyEnum { case one; case two }
let c = MyEnum.one
struct MyStruct { let property: Int }
let d = MyStruct(property: 0)
class MyClass {}
let e = MyClass()
object_isClass(type(of: a)) //false
object_isClass(type(of: b)) //false
object_isClass(type(of: c)) //false
object_isClass(type(of: d)) //false
object_isClass(type(of: e)) //true