具有从 View 和其他类更新的多个变量的结构
struct MyViewViewModel {
let style: Variable<CustomEnum> = Variable(.value1)
let displayedValue: Variable<String> = Variable("")
let stepIndex = Variable(0)
let startedDate: Date
var disposeBag = DisposeBag()
}
样式
- 从第 3rt 部分类更新
stepIndex
- 应从 View 的 CocoaAction
更新,并取决于 style
更改(重置)
displayedValue
- 取决于 style
+ stepIndex
+ startedDate
init(style: Observable<CustomEnum>, startedDate: Date) {
self.startedDate = startedDate
style
.bind(to: self.style)
.disposed(by: disposeBag)
self.style.asObservable()
.map { _ in return 0 }
.bind(to: stepIndex)
.disposed(by: disposeBag)
self.style.asObservable()
.map { return self.string(for: $0) } //error: Closure cannot implicitly capture a mutating self parameter
.bind(to: displayedValue)
.disposed(by: disposeBag)
}
mutating func string(for type: CustomEnum) -> String {
return "\(self.stepIndex.value) + \(type) + \(self.startedDate.day)"
}
主要问题如何首先处理stepIndex
变量以及更新startedDate
值之后。
我不想使用类而不是结构,我不确定是否需要它(以避免保留循环)。 RxSwift 应该有办法摆脱这个。
最佳答案
简短的回答是你不能。需要在初始化时设置日期,但步骤索引流以异步方式发出值...
让这个工作如我所见的唯一方法是将 startDate 设为 var Date?。
关于swift - RxSwift 从一个 Observable 更新多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46707198/