gpt4 book ai didi

ios - RxSwift 计算变量由 2 个其他变量组合而成

转载 作者:行者123 更新时间:2023-11-28 10:11:33 25 4
gpt4 key购买 nike

我需要 var isOn: Variable<Bool>这是从 2 个其他变量计算得出的。如何在能够从我的 isOn 读取最新值的同时订阅其他变量的值变化也是变量?

下面是使用 2 个 Observable 类型变量的糟糕解决方案和 Variable .但我正在寻找正确的解决方案,基本上是合并我的 isOnisOnVariable成一个。

let from = Variable<Date?>(nil)
let to = Variable<Date?>(nil)

let isOnVariable = Variable<Bool>(false)
var isOn: Observable<Bool> {
return Observable.combineLatest(from.asObservable(), to.asObservable()) { [weak self] to, from in
switch (from, to) {
case (.none, .none):
self?.isOnVariable.value = false
return false
default:
self?.isOnVariable.value = true
return true
}
}
}

最佳答案

let from = Variable<Date?>(nil)
let to = Variable<Date?>(nil)
let isOnVariable = Variable<Bool>(false)
Observable.merge(from.asObservable(), to.asObservable())
.map { [weak self] (_) -> Void in
guard let `self` = self else {
return
}
switch (self.from.value, self.to.value) {
case (.none, .none):
self.isOnVariable.value = false
default:
self.isOnVariable.value = true
}
}
.subscribe()
.disposed(by: disposeBag)

现在您可以订阅 isOnVariable 来监听值的变化,并且您可以随时访问 fromto 变量的值。我不确定你想做什么,所以你可以改变 .map 中的逻辑,但你明白了。如果您对我为什么使用 weak self 感兴趣,这是一本很好的读物 http://adamborek.com/memory-managment-rxswift/

关于ios - RxSwift 计算变量由 2 个其他变量组合而成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47400755/

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