Я использую папку xcassets для хранения отображаемых изображений. Для темы по умолчанию изображение всегда присутствует в xcassets, но для других тем изображение является необязательным, что приведет к использованию изображения по умолчанию.
Псевдокод:
struct ThemeImage {
static let standard = UIImage(named: "default-logo")!
static func themedImage(for theme: String) -> UIImage {
return UIImage(named: "\(theme)-logo") ?? ThemeImage.standard
}
}
Теперь, когда я пытаюсь загрузить изображение для темы, но ресурс не существует, приложение мгновенно создаст sh, сообщив об ошибке:
*** Assertion failure in -[_UIImageCGImageContent initWithCGImage:scale:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore_Sim/UIKit-3901.4.2/_UIImageContent.m:336
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Need an imageRef'
В документации четко указано
Возвращает
Объект, содержащий ненастроенную версию изображения, или ноль, если метод не может найти указанное изображение.
Кто-нибудь знает, что происходит или почему приложение вылетает, а не возвращает nil
?