Знать тип переменной в Swift

Как я могу определить тип переменной в Swift. Напр. если я пишу

struct RandomStruct.... - тип должен дать мне struct, а не RandomStruct

или если я пишу class RandomClass..., тип должен быть class, а не RandomClass.

Я попытался использовать Mirror.subjectType и type(of:), оба из которых дают выходные данные как RandomStruct и RandomClass

Ответ 1

Вы были близки с использованием Mirror: вы можете посмотреть displayStyle свойство (из перечисляемого типа Mirror.DisplayStyle) Mirror, отражающее экземпляр ваш тип

struct Foo {}
class Bar {}

let foo = Foo()
let bar = Bar()

if let displayStyle = Mirror(reflecting: foo).displayStyle {
    print(displayStyle) // struct
}

if let displayStyle = Mirror(reflecting: bar).displayStyle {
    print(displayStyle) // class
}

Просто обратите внимание, что .optional также является случаем displayStyle перечисления Mirror, поэтому обязательно подумайте о конкретных (развернутых) типах:

struct Foo {}

let foo: Foo? = Foo()

if let displayStyle = Mirror(reflecting: foo as Any).displayStyle {
    // 'as Any' to suppress warnings ...
    print(displayStyle) // optional
}

Ответ 2

Вы можете проверить этот способ:

if let randomClass = controlClass as? RandomClass {
   /* Codes */
}

Вы можете понять таким образом, свою переменную, какой класс.