swift - 如何使用 RxAlamofire 下载图像
问题描述
func showImageForUrl(url: String) -> Observable<Async<Any>> {
let result = RxAlamofire
.requestJSON(.get,
url,
parameters: nil)
.flatMap { (response, json) -> Observable<Any> in
return Observable.just(json)
}.async()
return result
}
网址字符串“ http://1.bp.blogspot.com/-KhiJ6WYQn8Q/T7ZXxb_KHxI/AAAAAAAABvM/_l134PCuEcA/s1600/dog+photos+3.jpg ”
解决方案
我认为问题之一是您请求的格式:应该是下载数据然后requestData(...)
将requestJSON(...)
其转换为图像。
这是一个比前面的代码简单一点的例子
func showImageForUrl(url: String) -> Observable<UIImage?> {
return RxAlamofire
.requestData(.get, url)
.map({ (response,data) -> UIImage? in
return UIImage(data: data)
})
}
您可以按以下方式使用它
showImageForUrl(myUrl)
.bind(to: myImageView.rx.image)
.disposed(by: disposeBag)
您可以通过过滤掉无效响应或何时UIImage
为 nil 等来更进一步。希望它有所帮助。
推荐阅读
- tensorflow - 如何创建一个将单个数字作为输入并输出二维数组的网络?
- javascript - 反应不渲染传递的道具
- c# - Topshelf 服务不会作为服务启动:错误 1053 服务没有响应..”
- python - 将张量转换为 numpy 数组时出现值错误
- excel - excel visual basic中是否有任何功能可以查找没有空白行的列范围?
- c++ - c ++是否可以在不基于其基类的派生类中创建构造函数?
- python - pytest:测试数据库约束
- angular - 如何在可重用表中使用 matSort?
- javascript - 在javascript中分离一个嵌套数组?
- php - 在服务提供商中添加邮件配置在 laravel 7.0 中不起作用,它给出了不支持的邮件传输错误