从 xcassets 加载图像导致断言失败
Loading image from xcassets causes assertion failure
我正在使用 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'
文档明确指出
Returns
An object containing an unconfigured version of the image, or nil if the method could not find the specified image.
有谁知道发生了什么或者为什么应用程序崩溃而不是返回 nil
?
问题毕竟与xcassets文件夹有关。我的文件夹里也有一些颜色,和图片同名。
意思是 UIColor(named: "default-logo")
和 UIImage(named: "default-logo")
将导致应用程序崩溃,即使这两个资源都存在并且在 xcassets 文件夹中有效。
这些资产的名称需要是唯一的。
我正在使用 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'
文档明确指出
Returns
An object containing an unconfigured version of the image, or nil if the method could not find the specified image.
有谁知道发生了什么或者为什么应用程序崩溃而不是返回 nil
?
问题毕竟与xcassets文件夹有关。我的文件夹里也有一些颜色,和图片同名。
意思是 UIColor(named: "default-logo")
和 UIImage(named: "default-logo")
将导致应用程序崩溃,即使这两个资源都存在并且在 xcassets 文件夹中有效。
这些资产的名称需要是唯一的。