2015-11-15 4 views
1

Следующий код работает отлично на IOS устройстве и симуляторе, но терпит неудачу в Xcode детской площадке (запуск с платформой IOS, установленной в площадках файл инспектор):атрибута пользовательского NSAttributedString с ошибкой только в Xcode детской площадке

class ACertainStringAttribute: NSObject {} 
NSMutableAttributedString(string: "Test", attributes: ["MyCustomAttribute" : ACertainStringAttribute()]) 

Он строит и отлично работать на устройстве, но на игровой площадке я получаю следующую ошибку времени выполнения:

2015-11-15 11:49:08.808 Test[38055:1538435] -[__lldb_expr_154.ACertainStringAttribute encodeWithCoder:]: unrecognized selector sent to instance 0x7fbd69c074d0 

Почему это различие?

+1

Похоже, что ваш атрибут не соответствует протоколу NSCoding. – trojanfoe

+0

Если это правда, это должно быть ошибкой при работе на устройстве или симуляторе, а не только на игровой площадке: -/ – Sencha

+0

Наверное, нет. Площадка должна делать что-то другое; Я не знаю Свифта достаточно хорошо, чтобы сказать вам, что. – trojanfoe

ответ

1

площадка пытается визуализировать строку сразу после создания экземпляра (чтобы просмотреть его в Result боковой панели). Код рендеринга должен опираться на атрибуты, соответствующие NSCoding - следовательно, немедленное исключение.

Если вставить тот же код в фактическом приложении, однако, автоматически не делают строку - она ​​просто создает экземпляр NSMutableAttributedString - это все.

Конечно, если вы попытаетесь установить его, допустим, UILabel.attributedText, приложение будет разбиваться с тем же исключением при рендеринге строки.

+0

Ах, вот и все. Я использую пользовательские атрибуты в своем коде и не могу понять, почему он не работает. Затем я просто понял, что перед отображением переводил свои пользовательские атрибуты в стандартные атрибуты! Поэтому он никогда не падает. Благодаря! – Sencha

Смежные вопросы