我正在尝试将一组图像从资产加载到 UICollectionview 中存在的图像视图中,但每当我运行应用程序时它都会显示错误。也没有显示图像。
我在ViewDidLoad
中使用的代码是,
var logoImage: [UIImage] = [
UIImage(named: "bakery")!,
UIImage(named: "baby")!,
UIImage(named: "frozen")!,
UIImage(named: "beauty")!,
UIImage(named: "cereal")!,
UIImage(named: "dairy")!,
UIImage(named: "drinks")!,
UIImage(named: "fruitsAndVeg")!,
]
cellForItemAtIndexPath
中的代码是,
cell.descImage.image = self.logoImage[indexPath.item]
当我运行该应用程序时,出现错误:
致命错误:解开可选值时意外发现 nil
var logoImage: [UIImage] = [
UIImage(named: "bakery")!,
P.S.I将图像从另一个项目导入xcasset,现在这可能是一个问题吗?
代码在上面的行上分解。任何帮助将不胜感激!
使用 !
时,您解开一个可选值,这意味着您告诉编译器:我知道图片不nil
。因此,如果您对编译器撒谎,则会收到以下错误:
致命错误:解开可选值时意外发现 nil
如果该行:
var logoImage: [UIImage] = [
UIImage(named: "bakery")!,
可能是数组中的任何图片都丢失了,但它会破坏您的程序。
您可以尝试使用条件语句加载单个图像以定位您的问题,并更好地设计您的代码:
- 创建空
UIImage
数组 - 使用映像名称创建
Strings
数组 在
Strings
数组上循环使用解包图像var logoImage = [UIImage]() //1 var names: [String] = ["bakery",...] //2 //3 for imageName in names{ if let image = UIImage(named: imageName) { logoImage.append(image) } else { print("image named: (imageName) is missing") } }