从xcassets加载图像会导致断言失败

问题描述 投票:0回答:1

我正在使用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
    }
}

现在,当我尝试为主题加载图像,但是资产不存在时,应用程序将立即崩溃,并报告以下错误:

*** 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。

有人知道发生了什么或为什么应用程序崩溃而不返回nil吗?

ios swift xcasset
1个回答
0
投票

毕竟,该问题与xcassets文件夹有关。我的文件夹中也有一些颜色,其名称与图片相同。

意味着UIColor(named: "default-logo")UIImage(named: "default-logo")将导致应用程序崩溃,即使xcassets文件夹中同时存在两个资源并且它们都有效。

这些资产的名称必须唯一。

© www.soinside.com 2019 - 2024. All rights reserved.