我正在构建一个非常简单的应用程序,用于循环查看图片。
所有图片都存储在项目的子文件夹中:
这是ViewController中的代码:
@IBOutlet var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var images = [UIImage]()
let items = Bundle.main.paths(forResourcesOfType: "jpg", inDirectory: "images")
for item in items {
let fileName = URL(string: item)?.lastPathComponent ?? "c1.jpg"
let image = UIImage(named: fileName)!
images.append(image)
}
imageView.image = UIImage.animatedImage(with: images, duration: Double(5*items.count))
}
}
这会在行let image = UIImage(named: fileName)!
上引发运行时错误
致命错误:展开Optional时意外发现nil 值:文件
fileName的值为“ c1.jpg”,听起来不错。
如果我的内存仍在工作,则相同的代码正在模拟器上运行,但在真实设备上出现运行时错误,现在它在这两个设备上均停止工作。不确定出什么问题了吗?我可以在“构建阶段”中看到“ images”文件夹,因此我认为应该将图像复制到捆绑包中吗?:
答案 0 :(得分:1)
尝试
let image = UIImage(named:"images/\(fileName)")!
OR
let items = Bundle.main.urls(forResourcesWithExtension: "jpg", subdirectory: "images") ?? []
for item in items {
if let imageData = try? Data(contentsOf:item) {
let image = UIImage(data:imageData)!
images.append(image)
}
}