不能在子文件夹中快速找到图像?

时间:2019-12-21 00:44:15

标签: ios swift xcode swift5

我正在构建一个非常简单的应用程序,用于循环查看图片。
所有图片都存储在项目的子文件夹中: project structure

这是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”文件夹,因此我认为应该将图像复制到捆绑包中吗?: enter image description here

1 个答案:

答案 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)
       }
   }