Я использую некоторые 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()