gpt4 book ai didi

ios - 使用 withLatestFrom 收集存储的变量属性

转载 作者:行者123 更新时间:2023-11-28 20:52:40 27 4
gpt4 key购买 nike

我想知道 RxSwift 中是否有一种方法可以观察存储的变量属性的值。例如。在以下示例中:

    var updatedValue: Int = 0

var observedValue: Observable<Int> {
return Observable.create({ (observer) -> Disposable in
observer.onNext(updatedValue)
return Disposables.create()
})
}

Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
updatedValue = updatedValue + 1;
}

let myObservable = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
.publish()

myObservable.connect()

myObservable
.withLatestFrom(observedValue)
.subscribe { (event) in
print(event)
}

我们有可变属性 updatedValue 和热可观察对象 myObservable。我们还在 Timer.scheduledTimer... 中增加 updatedValue 的值。

这里的流程非常简单。当我们订阅时,observedValue 被调用,我们从 observedValue 获得 onNext,然后是 Disposables.create()。然后我们打印事件 onNext(0)。

由于 myObservable 是基于 Observable.interval 的,因此每秒都会在 onNext 中打印相同的 withLatestFrom 值。

问题:有没有办法在每次 myObservable 发出新事件时打印 updatedValue 的最后一个值?所以不是 0,0,0... 我们得到 0,1,2...

我知道 updatedValue 可以声明为 BehaviorRelay。我还知道我们可以使用 .map { } 来捕获 self.updatedValue。

但我想知道是否有任何方法可以围绕标准变量属性创建一个 Observable 包装器,以便它在每次触发序列发送事件时使用最新值调用 onNext?无需捕获 self 或更改 updatedValue 的声明。

感谢任何意见和想法!

最佳答案

RxCocoa 有一个方便的 KVO 包装器。您应该能够在 NSObject 子类的 .rx 扩展中使用它。

对于你的问题,我想你可以这样做:

let updatedValueObservable = self.rx.observe(Int.self, "updatedValue")

关于ios - 使用 withLatestFrom 收集存储的变量属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56227626/

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