【发布时间】:2019-01-17 00:35:34
【问题描述】:
我使用一些BehaviourRelay 来表示一些变量。我使用withLatestFrom 作为其中之一。但是withLatestFrom 没有返回我绑定的最新值。
如果我使用combineLatest。它有效,但我想知道为什么 withLatestFrom 的代码不起作用
let dueDate = BehaviorRelay<Date?>(value: nil)
let numberScheduleDays = BehaviorRelay<Int>(value: 1)
let selectedPaymentDate = BehaviorRelay<Date?>(value: nil)
dueDate.asObservable()
.distinctUntilChanged()
.flatMap { Observable.from(optional: $0) }
.map { self.addDaysForDate(days: 1, date: $0) }
.bind(to: selectedPaymentDate)
.disposed(by: disposeBag)
selectedPaymentDate.asObservable()
.distinctUntilChanged()
.withLatestFrom(dueDate.asObservable()) { (selectedDate: $0, dueDate: $1) }
.map { self.daysBetweenDates(startDate: $0.dueDate, endDate: $0.selectedDate) }
.bind(to: numberScheduleDays)
.disposed(by: disposeBag)
dueDate.accept(Date())
在第一块selectedPaymentDate.value = Date() + 1之后
但在第二块 dueDate 仍然发出 nil 值。不知道为什么它的值不是Date()
【问题讨论】: