如何使用 RxAlamofire 下载图像
How to download image using 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
}
url 字符串“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 等。希望对您有所帮助。
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
}
url 字符串“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 等。希望对您有所帮助。