rac能够更好的完成响应式程序的编程,它将所有的事件都封装成信号,信号在管道里传递,通过对信号的接收、过滤、修改、合并等操作,完成对各种事件的响应处理

基础用法

获取信号并打印信号的内容

    [self.userName.rac_textSignal subscribeNext:^(NSString * _Nullable x) {NSLog(@"%@",x);}];
复制代码

过滤信号

filter方法返回值是racsignal,它的参数是一个block。 这个block的返回值是布尔类型,参数是信号携带的内容。根据block的返回值,决定是否创建新的信号,以达到过滤信号的目的

    [[self.userName.rac_textSignal filter:^BOOL(NSString * _Nullable value) {NSString * string = value;return string.length > 3;}]subscribeNext:^(NSString * _Nullable x) {NSLog(@"%@",x);}];
复制代码

转化信号

map这个方法的返回值是racsignal,它的参数是一个block。 这个block的返回值是一个对象,它的参数携带信号内容。block的返回值就是转化后新信号的内容

    [[[self.userName.rac_textSignal map:^id _Nullable(NSString * _Nullable value) {return [NSNumber numberWithInteger:value.length];}]filter:^BOOL(id  _Nullable value) {return [value integerValue] > 3;}]subscribeNext:^(id  _Nullable x) {NSLog(@"%@",x);}];
复制代码

合并信号

(combineLatest:reduce:)方法的返回值是信号,参数1是一个数组(使用时传递需要合并的信号),参数2是一个block。 block的返回值是一个对象,参数是两个对象(使用时传递参数1中信号对应的内容)。block的返回值就是转化后新信号的内容。

    RACSignal * userNameValidSignal = [self.userName.rac_textSignal map:^id _Nullable(NSString * _Nullable value) {return @(value.length > 3);}];RACSignal * passWordValidSignal = [self.passWord.rac_textSignal map:^id _Nullable(NSString * _Nullable value) {return @(value.length > 3);}];[RACSignal combineLatest:@[userNameValidSignal , passWordValidSignal] reduce:^id (NSNumber * userName , NSNumber * passWord){return @([userName boolValue] && [passWord boolValue]);}];
复制代码

reactivecocoa基础讲解相关推荐

  1. mysql 导出dmp文件_MySQL数据库基础讲解

    # 简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Publi ...

  2. 如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行

    NCL基础讲解(二)--NCL安装与运行 兰溪之水2015-11-04 上一期已经给大家简单介绍了NCL的基本情况,既然NCL在科学数据分析和可视化方面有那么多优点,那还等什么,让我们一起" ...

  3. C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息)

    C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中 ...

  4. 前端菜鸟必学!less使用基础讲解

    前端菜鸟必学!less使用基础讲解 概述 使用方法 语法简介 嵌套规则 实例 概述 less是动态的样式表语言,通过简单,明了的语法定义,使编写css 的工作变得非常简单,在实际项目开发中,大大提高了 ...

  5. CISP-PTE 基础讲解

    CISP-PTE 基础讲解 前言 渗透基础 owasp top 10 POC和EXP payload,shellcode和webshell CVE编号和CNVD编号 0day漏洞和0day攻击 木马. ...

  6. C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题、爱因斯坦的数学题、三色球问题与马克思手稿中的数学题)

    C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题.爱因斯坦的数学题.三色球问题与马克思手稿中的数学题) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本 ...

  7. C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏)

    C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...

  8. Unity LeapMotion SDK 基础讲解

    Unity LeapMotion SDK 基础讲解 LeapMation SDK 下载 LeapMation Unity 示例场景 下载 LeapMotion 组件解析 LeapServiceProv ...

  9. C/C++基础讲解(八十六)之游戏篇(解救人质游戏)

    C/C++基础讲解(八十六)之游戏篇(解救人质游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...

最新文章

  1. Service的基本组成
  2. Happy WS 之 控制台 -- Happy Console (一)
  3. How to enable coredump on centos 7.6
  4. centos系统查看资源使用情况的工具
  5. (解决)mysql1366中文显示错误的终极解决方案
  6. Linkis1.0下载地址
  7. python字典的常见操作_Python 字典(Dictionary) 基本操作
  8. 精华Java问题总结
  9. 操作系统之内存管理:5、虚拟存储技术(请求分页管理、页面置换算法、虚拟内存、地址变换)
  10. 剖析如何自己写框架Struts和Mybatis,学其原理而非重复造轮子
  11. 一种定力夹具控制系统
  12. 关于IOC反射错误(无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性...)的诊断办法...
  13. EF批量添加数据BulkInsert
  14. 小米手环nfc门卡摸拟成功后不能开门_如何使用小米手环5 NFC版进行门卡模拟(如公司门禁卡、小区门禁卡、学校门禁卡等)?...
  15. spring mvc 响应处理post请求和get请求 测试
  16. C语言、Java学习笔记(三)---几种简单的排序算法
  17. C语言进阶:程序中的三国天下 考研数据结构
  18. 新华社科普漫画刷屏:一分钟看懂区块链
  19. 如何在64位win10系统下通过virtualbox虚拟机安装苹果macOS 10.12
  20. 什么是内容交付网络?

热门文章

  1. 用C++11 实现 thread pool
  2. android 测试 大赛,轻量级android应用自动测试工具-2017全国大学生软件测试大赛.pdf...
  3. 海思Hi3516DV300 SDK首次安装以及编译问题的解决
  4. stm32气压传感器 带探头的_ST SSC 频道 | 基于ST STM32F302R8T6 电机空气压缩机方案
  5. Jenkins插件之Deploy
  6. Individual
  7. SQL查询【根据生日计算】
  8. button按钮怎么实现超链接
  9. 板邓:wordpress循环输出分类信息函数get_categories()
  10. PHP第六课 使用方法数组