Intereting Posts
Можно ли записывать микрофонный вход в MP3-звук? Как правильно установить модель при выполнении CABeginAnimation kCATransitionPush применяется для вставки / выгрузки изображения из UIImageview без эффектов fade / transparent iOS Как нарисовать только контур текста, но не заполнять себя? Ошибка при попытке запустить carthage Swift – Как предотвратить закрытие штепсельной розетки? iOS: сильная или слабая ссылка ARC с IBOutlets для наконечников (для пользовательского UITableviewCell) Cocos2D v3 CCTableView не прокрутка UIViewController с ошибкой UITableView и UISearchBar Как создать рамки для какао для всех архитектур, зависящих от других фреймворков, добавленных с использованием cocoapods? ios, webkit-overflow-scrolling: обнаружено распознавание касания в списке прокрутки Эквивалентно UIButtonTypeRoundedRect в быстром? Как я могу получить фактическое значение char вместо значения int Повторная подписка IPA с терминала Ошибка сегментации 11 ошибка на OS Sierra 10.12 Анимация рисует форму пирога в Swift

Инициализатор UIFont возвращает объект <uninitialized> и сбой приложения

Мое приложение iOS рушится на iOS 8.2 и отлично работает на iOS 9 и выше. Когда я проверил журнал сбоя, следующая функция вызывает сбой (написано в расширении NSMutableAttributedString )

 func changeFont(font: UIFont, range : NSRange, keepFontSize: Bool = false) { let traits = font.fontDescriptor().symbolicTraits let descriptor = baseDescriptor.fontDescriptorWithSymbolicTraits(traits) let newFont = UIFont(descriptor: descriptor, size: keepFontSize ? descriptor.pointSize : baseDescriptor.pointSize) self.removeAttribute(NSFontAttributeName, range: range) self.addAttribute(NSFontAttributeName, value: newFont, range: range) // <- Crash happens here } 

Журнал сбоев

*** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «NSConcreteMutableAttributedString addAttribute: значение: range :: nil value»

Когда я отлаживал и регистрировал переменные, используемые в этой функции, descriptor & newFont показанный как <uninitialized>

 (lldb) po traits ▿ UIFontDescriptorSymbolicTraits - rawValue : 268435458 (lldb) po baseDescriptor UICTFontDescriptor <0x7fc075b574c0> = { NSFontNameAttribute = CenturyGothic; NSFontSizeAttribute = 14; } (lldb) po descriptor <uninitialized> (lldb) po keepFontSize true (lldb) po newFont <uninitialized> 

Я не могу использовать, if let или newFont != nil здесь, потому что оба будут вызывать ошибку: « UIFont не будет ник ». Как я могу исправить этот крах? (Или Как я могу проверить, что объект инициализирован или нет?) Я действительно застрял в этой проблеме, так как большинство моих пользователей по-прежнему используют iOS 8.