Мне интересно, есть ли способ в 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 .Мы также увеличиваем значение updatedValue в Timer.scheduledTimer ... .
Поток здесь довольно прямой.Когда мы подписываемся, вызывается наблюдаемое значение, мы получаем onNext из наблюдаемого значения и затем Disposables.create ().Затем мы печатаем событие onNext (0).
Поскольку myObservable основано на Observable.interval , то же значение withLatestFrom печатается в onNext каждую секунду.
Вопрос: есть ли способ напечатать последнее значение updatedValue каждый раз, когда myObservable отправляет новое событие?Таким образом, вместо 0,0,0 ... мы получаем 0,1,2 ...
Я знаю, что updatedValue может быть объявлено как BehaviorRelay.Я также знаю, что мы могли бы использовать .map {} для захвата self.updatedValue.
Но мне интересно, есть ли способ создать оболочку Observable вокруг стандартного свойства переменной, чтобы он вызывал onNext с большинствомпоследнее значение каждый раз, когда триггерная последовательность отправляет событие?Без захвата себя или изменения объявления на updatedValue.
Спасибо за любые комментарии и идеи!