美文网首页RxSwift干货
30天学RxSwift-ObserverType,AnyObse

30天学RxSwift-ObserverType,AnyObse

作者: Linqingmo | 来源:发表于2016-04-24 23:15 被阅读654次

30天学RxSwift的github地址 

在RxSwift中有一个ObserverType协议。实现ObserverType协议的是观察者对象,用于观察Observable发出的信号。对于观察到的信号有个处理方法func on(event: Event)。

可以直接用来使用的实现ObserverType的对象就是AnyObserver。订阅Observable的方式就是subscribe。

在RxCocoa中可以看到UILabel的rx_text属性就是AnyObserver<String>类型的。回看上一节提到的问题,当点击按扭时让UILabel显示字符串。上一节说到可以在subscribeNext中赋值,但是这个显然不够Rx。这里给出更加优雅的方式。

button.rx_tap

.map { _ in "Test" }

.bindTo(label.rx_text)

这里的map是将button点击的信号内容从Void转换成"Text",然后直接将值绑定在label上。这里的bindTo和subscribe实现的是等价的,但依RxCocoa中所说的,bindTo的内在实现更好,并且bindTo这个名称也很直观,所以当引入了RxCocoa这个framework后一般我都是用bindTo来实现UI的订阅。

这样或许还看不出来优雅在哪里,那再举一个栗子。

本节还有个概念没讲到,那就是ControlProperty,ControlProperty是一个实现ControlPropertyType的对象ControlPropertyType是继承ObservableType, ObserverType协议的协议。因此我们可以将ControlProperty的变量当作Observable来使用。

textField.rx_text

.bindTo(label.rx_text)

这里将textField的值与label绑定在一起了,这样当textField的输入改变时,label就会实时响应。再也不需要设置delegate实现delegate方法了,感觉世界一下子美好了。

相关文章

  • 30天学RxSwift-ObserverType,AnyObse

    30天学RxSwift的github地址 在RxSwift中有一个ObserverType协议。实现Observe...

  • 学,学,学

  • 学?学!

    学习这个东西永远都只是自己的事情,你想学他不分早晚。有的人学活到老学到老,那么有的人他从小就不爱学,那么后来终归是...

  • 如何学习

    学什么?……盯着『目标』学 怎么学?……带着『问题』学 向谁学?……跟着『高手』学

  • 有没有感觉退休后学习热情高涨?

    有没有觉得退休后学习热情高涨?学唱歌、学跳舞、学画画,又学摄影、学书法、学播音,还学厨艺、学写作、学游泳,学打太极...

  • 《学霸与学渣》

    学霸与学渣 角色:学霸A , 学霸B,学神,学渣A,学渣B,老师 演员要求: 学霸A:能尽快哭出来,历史学霸 学霸...

  • 我最想干的事

    学陶艺 学画画 学美妆 学盘发 学烘焙 每天跑步快走一小时 学瑜伽 每天读一小时读书. 学美食 学佛法 学茶道 学...

  • 《新闻采访与写作》课程简介

    新闻学研究包括理论新闻学、历史新闻学和实用新闻学。 实用新闻学包括新闻采访学、新闻写作学、新闻编辑学和新闻评论学。...

  • 史上最快的学习技能的方法

    听说你想学英语,学吉他,学编程,学画画,学唱歌,学做菜,学瑜伽,学打羽毛球,学游泳,学围棋,却不知道怎么入门? 找...

  • 最近

    浮躁得很,不能再这样,要振作起来,假期搞好CNN,学一学C,学一学python,学一学数学,学一学英语,最好再能撂...

网友评论

    本文标题:30天学RxSwift-ObserverType,AnyObse

    本文链接:https://www.haomeiwen.com/subject/rxdfrttx.html