Ответ 1
Используйте type.self
, чтобы вернуть тип, который можно передать в метод, который принимает аргумент уровня. Например, UILabel.self
может быть передан вызову метода isKindOfClass
. Строковое представление класса можно найти через dynamicType.description()
:
var label = UILabel()
println(label.dynamicType.description())
println(label.isKindOfClass(UILabel.self))
Свифта-3
var label = UILabel()
println(type(of: label).description())
Выход
UILabel
true
Здесь немного больше фона - есть два выражения, о которых нужно знать: самоопределение postfix и выражение динамического типа. Из документы:
Postfix Self
Самостоятельное выражение postfix состоит из выражения или имени типа, за которым сразу следует .self. Он имеет следующие формы:expression.self type.self
Первая форма оценивает значение выражения. Например, x.self оценивается как x.
Вторая форма оценивает значение типа. Используйте эту форму для доступ к типу в качестве значения. Например, поскольку SomeClass.self оценивает сам тип SomeClass, вы можете передать его функции или метод, который принимает аргумент уровня уровня
Выражение динамического типа
Выражение dynamicType состоит из выражения, немедленно за которым следует .dynamicType. Он имеет следующий вид:expression.dynamicType
Выражение can not является именем типа. Весь динамический тип выражение оценивает значение типа времени выполнения выражение.