RxSwift var-outlet 绑定组织

Posted

技术标签:

【中文标题】RxSwift var-outlet 绑定组织【英文标题】:RxSwift var-outlet binding organistaion 【发布时间】: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 生命周期内多次重新加载。 所以:

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

【问题讨论】:

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

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

【讨论】:

以上是关于RxSwift var-outlet 绑定组织的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift 使用 RxCocoa 绑定到动画

RxSwift:使用 rx_refreshing 进行 uirefreshcontrol

RxSwift:将 RX 绑定添加到 UITextField 时出错:“Binder<String?>”类型的值没有成员“debounce”

在 RxSwift 中测试 UITableView.rx.itemSelected 回调

RxSwift 响应式编程详解(001)

rxswift-self.usernameTF.rx.text.orEmpty.map