filter
     过滤信号,使用它可以获取满足条件的信号.
- (void)filter
{
//只有当我们文本框内容长度大于5才想要获取文本框的内容
[[_passWord.rac_textSignal filter:^BOOL(id value) {
//value:源信号的内容
return [value length] > 5;
//返回值就是过滤的条件,只有满足这个条件才能获取到内容
}] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
}
 
ignore:
      忽略完某些值的信号.
- (void)ignore
{
//创建信号
RACSubject *subject = [RACSubject subject];
//ignore:忽略一些值
//ignoreValues:忽略所有值
RACSignal *ignoreSignal = [subject ignore:@"HMJ"];
// RACSignal *ignoreSignal = [subject ignoreValues];
//订阅信号
[ignoreSignal subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//发送信号
[subject sendNext:@"HMJ"];
[subject sendNext:@"WGQ"];
}
 
 
distinctUntilChanged:
     当上一次的值和当前的值有明显的变化就会发出信号,否则会被忽略掉。
     在开发中,刷新UI经常使用,只有两次数据不一样才需要刷新
- (void)distinctUntilChanged
{
//distinctUntilChanged:如果当前的值跟上一个值相同就不会被调用到
//创建信号
RACSubject *subject = [RACSubject subject];
[[subject distinctUntilChanged] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
[subject sendNext:@"HMJ"];
[subject sendNext:@"HMJ"];
[subject sendNext:@"HMJ"];
}
 
take:
     从开始一共取N次的信号
- (void)take
{
//创建信号
RACSubject *subject = [RACSubject subject];
RACSubject *signal = [RACSubject subject];
//take:取前面几个值
//在没到第三个时就遇到[subject sendCompleted];那么就会停止发送信号
[[subject take:3] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//takeLast:取后面多少个值,必须发送完成
//只有[subject sendCompleted];才会发送信号
[[subject takeLast:2] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//takeUntil:只要传入的信号发送完成或者signal发送信号,就不会再接收信号的内容
[[subject takeUntil:signal] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//发送任意数据
[subject sendNext:@1];
[subject sendNext:@"HMJ"];
[subject sendNext:@3];
[subject sendCompleted];
[subject sendNext:@4];
[signal sendNext:@"signal"];
}
 
switchToLatest:
     用于signalOfSignals(信号的信号),有时候信号也会发出信号,会在signalOfSignals中,获取signalOfSignals发送的最新信号
- (void)switchToLatest
{
RACSubject *signalOfSignal = [RACSubject subject];
RACSubject *signal = [RACSubject subject];
// 获取信号中信号最近发出信号,订阅最近发出的信号。
// 注意switchToLatest:只能用于信号中的信号
//订阅信号
[signalOfSignal.switchToLatest subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//发送信号
[signalOfSignal sendNext:signal];
[signal sendNext:@"signal"];
}
 
skip
跳过几个信号,不接受
- (void)skip
{
//skip:跳跃几个值再接收被订阅
//创建信号
RACSubject *subject = [RACSubject subject];
[[subject skip:2] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
[subject sendNext:@"HMJ"];
[subject sendNext:@"1"];
[subject sendNext:@"3"];
}

RAC中常见的高级用法-过滤的更多相关文章

  1. RAC中常见的高级用法-bind方法

    RAC操作思想:      Hook(钩子)思想 RAC核心方法:bind      bind方法      假设想监听文本框的内容,并且在每次输出结果的时候,都在文本框的内容拼接一段文字" ...

  2. RAC中常见的高级用法-组合

    组合: concat组合:           按一定顺序执行皇上与皇太子关系 concat底层实现:     1.当拼接信号被订阅,就会调用拼接信号的didSubscribe     2.didSu ...

  3. 详解Vue中watch的高级用法

    我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: <div> <p>FullName: {{fullName} ...

  4. linux中find命令高级用法

    前言 在<Linux中的文件查找技巧>一文中,我们已经知道了文件查找的基本方法,今天我们介绍find命令的一些高级使用技巧.它能满足我们一些更加复杂的需求. 查找空文件或空目录 有时候需要 ...

  5. pymongo常见的高级用法

    pymongo是python中基于mongodb数据库开发出来的,比mongoengine要高级一些,也要好用一些. 基本的增删查改就不说了 insert() delete() find() upda ...

  6. SQL语句中的select高级用法

    #转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...

  7. Flutter 中渐变的高级用法

    Flutter 中渐变有三种: LinearGradient:线性渐变 RadialGradient:放射状渐变 SweepGradient:扇形渐变 看下原图,下面的渐变都是在此图基础上完成. Li ...

  8. 随机记录工作中常见的sql用法错误(一)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...

  9. Sql server存储过程中常见游标循环用法

    用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE ), ), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELE ...

随机推荐

  1. SpringMVC配置版到注解版

    什么是springmvc? 1.1.什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来组织代码 ...

  2. ELK集群之kafka(7)

    原理待补充: kafka依赖于zookeeper集群. 都是基于java 由于源码安装jdk 未声明bin下java 在各自server配置文件中声明 JAVA_HOME=/usr/local/jdk ...

  3. RabbitMQ(六)消息幂等性处理

    一.springboot整合rabbitmq 我们需要新建两个工程,一个作为生产者,另一个作为消费者.在pom.xml中添加amqp依赖: <dependency> <groupId ...

  4. 3组-Alpha冲刺-2/6

    一.基本情况 队名:发际线和我作队 组长博客:链接 小组人数:10 二.冲刺概况汇报 黄新成(组长) 过去两天完成了哪些任务 文字描述 在校内外进行了数据采集,采集了多场景的数据,并进行了帧分割. 展 ...

  5. 从源码分析 XtraBackup 的备份原理

    MySQL物理备份工具,常用的有两个:MySQL Enterprise Backup 和 XtraBackup. 前者常用于MySQL企业版,后者常用于MySQL社区版.Percona Server ...

  6. 我個人喜歡的一些Ubuntu的相關配置

    1.vim vim安裝: sudo apt-get install vim-gtk vim美化:刚安装的VIM,可能界面并不是十分友好,我们可以更改vim的配置文件,按照我们的需求去修改它.在命令行下 ...

  7. 【JVM】JVM 概述、内存结构、溢出、调优(基础结构+StringTable+Unsafe+ByteBuffer)

    什么是 JVM ? 定义 Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境) 好处 一次编写,到处运行 自动内存管理,垃圾回收功能 数组下标越界 ...

  8. [atAGC034F]RNG and XOR

    令$N=2^{n}$先将$\forall 0\le i<N,a_{i}$除以$\sum_{i=0}^{N-1}a_{i}$,即变为概率 令$f_{i}$表示$i$的答案(第一次变成$i$的期望步 ...

  9. [atAGC050A]AtCoder Jumper

    考虑二叉树的结构,但并不容易构造从叶子返回的边 (以下为了方便,将所有点编号为$[0,n)$) 对于$i$,选择$2i\ mod\ n$和$(2i+1)\ mod\ n$这两条出边 从二叉树的角度并不 ...

  10. [bzoj1572]工作安排

    按照Di排序,从小到大枚举物品,考虑如果直接能选就选上,不能选就考虑替换之前价值最小的来选(显然一定是可行的,只需要在原来选价值最小的时候选这个就行了),这个东西用堆来维护即可 1 #include& ...