ios - 从 Firebase 存储使用 Kingfisher 下载图像
问题描述
在我的应用程序中,我将图像存储在Firebase Storage 以及Cloud Firestoreurl
中。现在,当我尝试检索此图像时,我正在使用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
正确,请检索它,然后将其保存dataSourceArrayWithWishes
为UIImage
. 如果没有,那么只需保存一个空的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
是一种异步方法,这意味着崩溃的行在从 firebasedataSourceArrayWithWishes[wishIDX].wishes.append(image: imageView.image!)
获取图像之前运行,因此它是 nil
推荐阅读
- c++ - C++ 删除了新操作符但可以创建 shared_ptr
- c++ - 再次关于 enable_if_t 中的 C++ SFINAE
- c++ - 使用双指针的分段错误
- reactjs - 使用 webpack 4 为生产优化 CSS
- cordova - 离子贝宝ID交易
- mysql - 用于连接和子查询的 sql 查询
- html - “转到某个部分”在 java 电子邮件中不起作用
- flask - invalid_grant:错误请求 | 在 google oauth Hangouts Chat 中生成 access_token 时出错
- git - 忽略跟踪文件的更改
- instagram - Instagram - 获取帖子评论