Вы должны увидеть сообщение об ошибке в консоли:
этот класс не соответствует кодировке значения ключа для типа ключа
Эта ошибка является ключом к проблеме. Определяемые пользователем атрибуты времени выполнения работают через функцию Objective-C / Cocoa, кодирование значения ключа. Для этого требуется, чтобы Objective-C мог видеть свойство, которое вы пытаетесь установить. В современном Swift вы можете сделать собственное свойство доступным для Objective-C, пометив его атрибутом @objc
:
@objc var type = String()
Ваш код будет работать так же, как и раньше.
(Но предложение Дрюстера также хорошо. @IBInspectable
использует тот же механизм , что и пользовательские атрибуты времени выполнения. Если вы помечаете что-то как @IBInspectable
, оно автоматически помечается как @objc
под капотом ( то же самое относится и к @IBOutlet
, который также использует этот механизм). И свойство Inspectable дает вам намного более приятный пользовательский интерфейс в IB; вы можете установить свое свойство непосредственно в инспекторе атрибутов, вместо связываться с таблицей пользовательских атрибутов времени выполнения.)