我正在使用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
吗?
答案 0 :(得分:0)
毕竟,该问题与xcassets文件夹有关。我的文件夹中也有一些颜色,与图片的名称相同。
意味着UIColor(named: "default-logo")
和UIImage(named: "default-logo")
会导致应用程序崩溃,即使xcassets文件夹中同时存在两个资源并且它们都有效。
这些资产的名称必须唯一。