Ios 使用ReactiveCocoa 4在MVVM中将信号从视图传递到模型

Ios 使用ReactiveCocoa 4在MVVM中将信号从视图传递到模型,ios,swift,mvvm,reactive-cocoa,Ios,Swift,Mvvm,Reactive Cocoa,我正在一个尽可能基本的iOS应用程序(Swift)中实现ReactiveCocoa 4,以便更好地了解如何在MVVM体系结构中使用它。我的问题是:如何从视图到模型获取UITextField的文本信号 我在这里得到的效果很好,但感觉这只是50%的反应(在任何情况下都不太漂亮): 查看(在viewDidLoad中) 查看模型 var originalText:String?{ didSet{self.model.originalText=originalText} } var origin

我正在一个尽可能基本的iOS应用程序(Swift)中实现ReactiveCocoa 4,以便更好地了解如何在MVVM体系结构中使用它。我的问题是:如何从视图到模型获取UITextField的文本信号

我在这里得到的效果很好,但感觉这只是50%的反应(在任何情况下都不太漂亮):

查看(在viewDidLoad中)

查看模型

var originalText:String?{
    didSet{self.model.originalText=originalText}
}
var originalText:String?{
    didSet{//Do model stuff}
}
型号

var originalText:String?{
    didSet{self.model.originalText=originalText}
}
var originalText:String?{
    didSet{//Do model stuff}
}

这就是我目前实现此行为的方式,我对RAC也是相当陌生的,所以对此持保留态度

我使用的是
reactivecococoa4.1.0和Rex 0.10.0


视图模型

  • originalText
  • 可变属性具有将从视图绑定到的
    生产者
    属性

    在这个范围内,调用
    originalText.producer.startWithNext
    将创建一个信号并添加一个观察者,这样您就能够从ViewModel中接收值

        let originalText: MutableProperty<String> = MutableProperty("")
    
        func observeTextField(){
            originalText.producer.startWithNext { (str) in
                self.model.originalText = str
            }
        }
    

    let textfield producer=(originalTextField.rac_textSignal()
    .toSignalProducer()
    .map{text in text as!String}
    .ignoreError())!
    viewModelInstance.originalText
    
        let textFieldProducer = (originalTextField.rac_textSignal()
            .toSignalProducer()
            .map {text in text as! String}
            .ignoreError())!
    
        viewModelInstance.originalText <~ textFieldProducer