RxSwift var-outlet结合器官

时间:2017-05-18 07:37:58

标签: ios swift binding rx-swift

我尝试在我的代码中使用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<Settings> ?!的{​​{1}}?
  2. 我的双向约束是否正确?
  3. 我需要以哪种顺序加载数据并调用绑定逻辑以启用绑定并立即设置起始值?

1 个答案:

答案 0 :(得分:0)

  1. 像往常一样存储变量。所有可观察的属性都在内部并存储为Variable<T>
  2. 似乎绑定是正确的,现在一切正常
    • 我执行了网络请求
    • 在我的设置对象变量中存储收到的对象。如果我需要刷新数据,我将更新对象属性值,但不更新完整对象
    • .startWith( settings.staticValue.value )添加到值 - &gt; tf绑定初始值
  3. P.S。纠正我,如果我犯了一些错误