Rx swift 如何获取可观察布尔值?
我已经创建了一个“可观察的”布尔变量,该变量将绑定(通过.bind)到UISwitchRx swift 如何获取可观察布尔值?,rx-swift,Rx Swift,我已经创建了一个“可观察的”布尔变量,该变量将绑定(通过.bind)到UISwitch(传统的命令式模型会更容易;但我正在尝试学习rxCocoa的细微差别) 我不知道在这里该做什么;我的逻辑基于一些处理字符串的示例代码 我使用“just”是因为我只对一个变量的切换值感兴趣。 正如您所看到的,闭包参数太模糊了 我错过了什么 试试这个: var IOButton = Variable(false) var isOn: Observable<Bool> = IOButton.asObse
(传统的命令式模型会更容易;但我正在尝试学习rxCocoa的细微差别) 我不知道在这里该做什么;我的逻辑基于一些处理字符串的示例代码
我使用“just”是因为我只对一个变量的切换值感兴趣。 正如您所看到的,闭包参数太模糊了
我错过了什么 试试这个:
var IOButton = Variable(false)
var isOn: Observable<Bool> = IOButton.asObservable()
更新1:
现在您可以订阅isOn
isOn
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
我相信我找到了解决办法:
// On/Off Switch
let onOffSwitch = Variable(true)
onOffSwitch.asObservable()
.subscribe (onNext: { switchValue in
print("This is new SwitchValue: \(switchValue)")
}).disposed(by: disposeBag)
aSwitch.rx.isOn.bind(to: onOffSwitch)
.disposed(by: disposeBag)
“aSwitch”是一个女巫。
当我切换开关时,我得到以下信息:
This is new SwitchValue: true
This is new SwitchValue: false
This is new SwitchValue: true
This is new SwitchValue: false
从这个范例中,我可以在闭包中插入一个self.func(),而不是print(),这样我就可以对每个开关进行操作;与熟悉的@iAction相比。我无法让它工作。我希望能够对每个开关事件执行func()。您也可以订阅
isOn
。请检查更新1虽然此解决方案可行,但通常明智的做法是避免使用变量
,因为它会导致有状态设计,而反应式编程试图避免这种情况。当来自命令式编程时,这是一个很容易陷入的陷阱。查看本文,了解有关无状态设计的一些提示:
This is new SwitchValue: true
This is new SwitchValue: false
This is new SwitchValue: true
This is new SwitchValue: false