[英]Value of type * has no member 'rx'
I'm trying to make a small reactive wrapper for ImageDownloader from AlamofireImage: 我正在尝试从AlamofireImage为ImageDownloader制作一个小的反应式包装:
import Foundation
import UIKit.UIImage
import AlamofireImage
import RxCocoa
import RxSwift
extension Reactive where Base: ImageDownloader {
public func download(urlRequest: URLRequest, filter: ImageFilter?) -> Observable<UIImage> {
return Observable.create { observer in
self.base.download(urlRequest, filter: filter) { response in
if let error = response.error {
observer.onError(error)
} else if let image = response.value {
observer.onNext(image)
}
}
return Disposables.create()
}
}
}
It compiles without a problem. 它编译没有问题。 But when I try to call
rx.download
on an instance of ImageDownloader I get an error saying that there is no 'rx' extension there: 但是,当我尝试在
rx.download
实例上调用rx.download
时,出现一条错误消息,提示那里没有'rx'扩展名:
Any guesses why this is happening? 任何猜测为什么会这样?
You need to conform to ReactiveCompatible
protocol first and then you can use 'rx' in your downloadRequest call 您需要先遵守
ReactiveCompatible
协议,然后才能在downloadRequest调用中使用“ rx”
import AlamofireImage
import RxSwift
extension ImageDownloader: ReactiveCompatible {}
extension Reactive where Base: ImageDownloader {
public func download(urlRequest: URLRequest, filter: ImageFilter?) -> Observable<UIImage> {
return Observable.create { observer in
let requestReceipt = ImageDownloader.default.download(urlRequest, filter: filter) { response in
if let error = response.error {
observer.onError(error)
} else if let image = response.value {
observer.onNext(image)
observer.onCompleted()
}
}
return Disposables.create {
requestReceipt?.request.cancel()
}
}
}
}
now you can call ImageDownloader.default.rx.download(urlRequest:filter:)
method like below 现在您可以调用
ImageDownloader.default.rx.download(urlRequest:filter:)
方法,如下所示
let imageRequest = URLRequest.init(url: URL(string: "https://imageserver.com/image/myimage.png")!)
let imageObservable: Observable<UIImage> = ImageDownloader.default.rx.download(urlRequest: imageRequest, filter: nil)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.