ios – 使用ReactiveCocoa 4将信号从视图传递到MVVM中的模型

ios – 使用ReactiveCocoa 4将信号从视图传递到MVVM中的模型,第1张

概述我正在尽可能基本的iOS应用程序( Swift)中实现ReactiveCocoa 4,以便更好地了解如何在MVVM架构中使用它.我的问题是:如何从视图模型获取UITextField的textSignal? 我在这里有什么用,但感觉这只有50%的反应(在任何情况下都不太漂亮): VIEW(在viewDidLoad中) originalTextField.rac_textSignal().subsc 我正在尽可能基本的iOS应用程序( Swift)中实现ReactiveCocoa 4,以便更好地了解如何在MVVM架构中使用它.我的问题是:如何从视图到模型获取UITextFIEld的textSignal?

我在这里有什么用,但感觉这只有50%的反应(在任何情况下都不太漂亮):

VIEW(在vIEwDIDLoad中)

originalTextFIEld.rac_textSignal().subscribeNext{    (next:AnyObject!) -> () in    let text = next as! String    self.viewmodel?.originalText=text}

查看模型

var originalText:String?{    dIDSet{self.model.originalText=originalText}}

模型

var originalText:String?{    dIDSet{//Do model stuff}}
解决方法 这就是我目前实现这种行为的方式,我对RAC也很陌生,所以请耐心等待.

我正在使用ReactiveCocoa 4.1.0&雷克斯0.10.0

视图模型:

>为originalText设置MutableProperty

Mutable属性具有您将从视图绑定到的producer属性.

使用该绑定,调用originalText.producer.startWithNext将创建一个Signal并添加1个观察者,这样您就可以从viewmodel中接收值

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

视图:

添加Rex作为依赖项并导入它.您将使用Rex中的ignoreError来处理类型冲突.

SignalProducer被定义为SignalProducer< T,ErrorType>所以你必须删除ErrorType以匹配你的MutableProperty< String>.

>从文本字段创建信号生成器
>忽略信号生产者的错误
>将信号生成器绑定到viewmodel的MutableProperty
>从步骤3绑定后,从视图中调用viewmodel.observeTextFIEld

中缀<〜运算符将生成器绑定到viewmodel的MutableProperty

import Rex

let textFIEldProducer = (originalTextFIEld.rac_textSignal()        .toSignalProducer()        .map {text in text as! String}        .ignoreError())!    viewmodelinstance.originalText <~ textFIEldProducer

我希望这可以帮助你.

总结

以上是内存溢出为你收集整理的ios – 使用ReactiveCocoa 4将信号从视图传递到MVVM中的模型全部内容,希望文章能够帮你解决ios – 使用ReactiveCocoa 4将信号从视图传递到MVVM中的模型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1003760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存