【问题标题】:RxSwift var-outlet binding organistaionRxSwift var-outlet 绑定组织
【发布时间】:2017-05-18 07:37:57
【问题描述】:

我尝试在我的代码中使用 RxSwift 并有一个问题:

  • 我有一个具有不同属性的Settings 类(例如staticValue):

    class DeviceSettings: NSObject {    
        var staticValue = Variable<Int>(0)
    }
    
  • 我有一个带有 UITextField 的 UI,它应该与属性双向连接,效果很好:

    settings.staticValue.asObservable()
        .map({ String($0) })
        .bindTo(staticValueField.rx.text)
        .addDisposableTo(disposeBag)
    
    staticValueField.rx.controlEvent([.editingDidEnd]).asObservable()
        .map({ Int(self.staticValueField.text!)! }) // Always Int
        .subscribe(onNext: {
            self.settings.staticValue.value = $0
        }).addDisposableTo(disposeBag)
    

但实际的Settings 对象将通过网络请求加载,并且可以在 VC 生命周期内多次重新加载。 所以:

  1. 我应该如何存储我的设置对象?像往常一样变量或 Variable&lt;Settings&gt;?!
  2. 我的双向绑定正确吗?
  3. 我需要按什么顺序加载数据并调用绑定逻辑来启用绑定并立即设置起始值?

【问题讨论】:

    标签: ios swift binding rx-swift


    【解决方案1】:
    1. 像往常一样存储变量。所有可观察的属性都在内部并存储为Variable&lt;T&gt;
    2. 看来绑定是正确的,目前一切正常
      • 我执行了网络请求
      • 将接收到的对象存储在我的设置对象变量中。如果我需要刷新数据,我会更新对象属性值,但不会更新整个对象
      • .startWith( settings.staticValue.value ) 添加到 value -> tf 绑定初始值

    附:如果我犯了一些错误,请纠正我

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多