Rx swift 如何获取可观察布尔值?

Rx swift 如何获取可观察布尔值?,rx-swift,Rx Swift,我已经创建了一个“可观察的”布尔变量,该变量将绑定(通过.bind)到UISwitch(传统的命令式模型会更容易;但我正在尝试学习rxCocoa的细微差别) 我不知道在这里该做什么;我的逻辑基于一些处理字符串的示例代码 我使用“just”是因为我只对一个变量的切换值感兴趣。 正如您所看到的,闭包参数太模糊了 我错过了什么 试试这个: var IOButton = Variable(false) var isOn: Observable<Bool> = IOButton.asObse

我已经创建了一个“可观察的”布尔变量,该变量将绑定(通过.bind)到UISwitch
(传统的命令式模型会更容易;但我正在尝试学习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