使用 Kingfisher 从 Firebase Storage 下载图像
Download image with Kingfisher from Firebase Storage
在我的应用程序中,我将图像存储在 Firebase Storage 及其 url
到 Cloud 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
在我的应用程序中,我将图像存储在 Firebase Storage 及其 url
到 Cloud 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