Загрузка изображения из xcassets приводит к ошибке подтверждения - PullRequest
0 голосов
/ 20 февраля 2020

Я использую папку 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?

1 Ответ

0 голосов
/ 20 февраля 2020

В конце концов, проблема была связана с папкой xcassets. У меня в папке тоже было несколько цветов, имя которых было таким же, как у изображения.

Значение UIColor(named: "default-logo") и UIImage(named: "default-logo") приведет к тому, что приложение обработает sh, даже если оба ресурса присутствуют и действительны в папке xcassets.

Имя этих ресурсов должно быть уникальным.

...