gpt4 book ai didi

ios - 如何在 RxSwift 中为 Binder 支持 distinctUntilChanged?

转载 作者:行者123 更新时间:2023-11-28 13:59:39 37 4
gpt4 key购买 nike

我为 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()

我的想法是,在将评级值传递给 Controller ​​之前,我需要进行节流或去抖动,如下所示:

    self.ratingView_Driver.rx.rating
.distinctUntilChanged()
.debounce(0.5, scheduler: MainScheduler.instance)
.subscribe { _ in

}.disposed(by: self.disposeBag)

错误是:

Value of type 'Binder' has no member 'distinctUntilChanged'

最佳答案

我假设您的 View 具有 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)

关于ios - 如何在 RxSwift 中为 Binder 支持 distinctUntilChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669475/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com