我为FloatRatingView
库的rating
属性做了一个简单的Rx扩展,如下所示:
import UIKit
import RxSwift
import RxCocoa
public extension Reactive where Base: FloatRatingView {
/// Bindable sink for `rating` property
public var rating: Binder<Double?> {
return Binder(self.base) { frv, attr in
frv.rating = attr ?? 0
}
}
}
问题是,我如何使该扩展支持.distinctUntilChanged()
?
我的想法是,在将额定值传递给控制器之前,需要先进行节流或防抖操作,例如:
self.ratingView_Driver.rx.rating
.distinctUntilChanged()
.debounce(0.5, scheduler: MainScheduler.instance)
.subscribe { _ in
}.disposed(by: self.disposeBag)
错误是:
“活页夹”类型的值没有成员“ distinctUntilChanged”
答案 0 :(得分:1)
我假设您的视图具有rating
属性。
extension Reactive where Base: FloatRatingView {
var rating: Observable< Double > {
return self.observeWeakly(Double.self, #keyPath(FloatRatingView.rating)).map { $0 ?? 0 }
}
}
使用:
self.ratingView.rx.rating
.distinctUntilChanged()
.debounce(0.5, scheduler: MainScheduler.instance)
.subscribe { _ in
}.disposed(by: self.disposeBag)