使用 Kingfisher 从 Firebase Storage 下载图像

Download image with Kingfisher from Firebase Storage

在我的应用程序中,我将图像存储在 Firebase Storage 及其 urlCloud Firestore。 现在,当我尝试检索此图像时,我正在使用 Kingfisher,但我认为我对 Kingfisher 的工作原理有误解。这是我的代码:

let imageView = UIImageView()
    imageView.image = UIImage()
    if let imageUrl = URL(string: imageUrlString) {
        let resource = ImageResource(downloadURL: imageUrl)
        imageView.kf.setImage(with: resource) { (result) in
            switch result {
            case .success(_):
                print("success")
            case .failure(_):
                print("fail")
            }
        }
    }
dataSourceArrayWithWishes[wishIDX].wishes.append(image: imageView.image!)

我想在这里做的是,如果 imageUrl 是正确的,检索它然后将它作为 UIImage 保存到 dataSourceArrayWithWishes。如果没有,那么就保存一个空的UIImage.

然而,当给出有效的 imageUrl 时,它会失败,因为 imageView.image! 不能为空。

有人可以帮我吗?

将它移到成功块内

        case .success(_):
            print("success") 
           dataSourceArrayWithWishes[wishIDX].wishes.append(image: imageView.image!)
        case .failure(_):
            print("fail")
        }
    }
}

这个 imageView.kf.setImage(with: resource) { (result) in 是一个异步方法,这意味着崩溃的行 dataSourceArrayWithWishes[wishIDX].wishes.append(image: imageView.image!) 在从 firebase 获取图像之前运行,因此它是 nil