如何使用ReactiveCocoa 4.0和MVVM实现双向绑定

时间:2016-03-22 11:43:48

标签: ios swift reactive-cocoa reactive-cocoa-4

我在使用Reactive Cocoa 4.0和MVVM(swift 2.0)的项目中工作。在视图模型中,我有根据文本字段更改更新的字符串,但如果字符串更改,我需要更新该文本字段。是否可能用于textfield和string(ageString)之间的双向绑定。

txtAge.rac_textSignal() ~> RAC(objViewModel, "ageString")

2 个答案:

答案 0 :(得分:4)

您可以尝试以下代码:

viewModel.ageString.producer
         .skipRepeats { [weak self] in
                 $1 == self?.txtAge.text
         }.startWithNext { [weak self] in
                 self?.txtAge.text = $0
}

viewModel.ageString <~ txtAge.rac_textSignal()
        .toSignalProducer()
        .map { ($0 as? String) ?? "" }
        .flatMapError { _ in SignalProducer<String, NoError>.empty }

答案 1 :(得分:0)

在RAC 2.x之前,您可以使用提供此功能的RACChannel(您可以订阅每个频道终端,并在新值到达时收到通知)。 频道和终端尚未移植到RAC 2.x,所以今天在RAC中没有双向绑定,但它不应该是一个大问题,因为你总是可以找到一个不同的(非常好的方法。

有关更多详细信息,您可以在github上的框架问题中找到关于此主题的许多主题,例如: