Intereting Posts
Как растянуть изображения в сенсорном направлении в iPhone sdk? Основные данные: Модель, используемая для открытия магазина, несовместима с той, которая используется для создания магазина Есть ли locationChange equlivent для PhoneGap InAppBrowser, как в ChildBrowser Css-анимация в ионном приложении не работает в iOS-симуляторе Создание сервера-заглушки для iOS (Mocking NSUrlConnection) UIView init с кодером вызывает рекурсию Как я могу изменить начальный ViewController в LaunchScreen с помощью Swift? Проверьте, является ли массив NULL по определенному индексу в iOS Значки на вкладке пикселированы и отрезаны как установить ориентацию только в портрете? iOS Swift Получение маршрутов между двумя точками и рисование на карте Как сделать фоновое изображение прозрачным в iWatch Watchkit Мое решение этого упражнения кажется слишком простым; намеки? Приложение для камеры, такое как поворот экрана и навигация Как работает источник данных и делегат в UITableView?

Инициализатор 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.