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. 【Go语言学习笔记】Go的defer

    关键字 defer ⽤于延迟一个函数或者方法(或者当前所创建的匿名函数)的执行. 注意,defer语句只能出现在函数或方法的内部. defer语句经常被用于处理成对的操作,如打开.关闭.连接.断开连接 ...

  2. 【微服务落地】服务间通信方式: gRPC的入门

    gRPC是什么 官方介绍: https://grpc.io/docs/what-is-grpc/introduction/ "A high-performance, open-source ...

  3. Redis监控调研

    1 调研目的 主要的目的是想调研各大云平台有关Redis监控功能的实现,但是最后我发现各大云平台提供的监控功能都比较基础,比如我想看诸如访问频率较高的HotKey.占用内存较大的Bigkey等指标,它 ...

  4. 【java+selenium3】自动化cookie操作+图形验证码处理 (十五)

    一.cookie操作 1.获取浏览器所有的cookie import java.util.Set; import org.openqa.selenium.Cookie; //获取浏览器所有的cooki ...

  5. C++ pragma once 与 ifndef 用法区别

    #pragma once 与 #ifndef 的作用 (1)在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性. (2)在能够支持这两种方式的编译器上,二者并没有太大的 ...

  6. linux堡垒机下定位日志文件内容

    查找关键词grep 命令: grep '关键字' 文件 --color 功能:搜素文件内容 语法: grep [-iv] 关键字 文件 -i 不区分大小写 -v 忽略指定字符串 -n 显示行号 -C ...

  7. 【JAVA】笔记(5)--- final;抽象方法;抽象类;接口;解析继承,关联,与实现;

    final: 1.理解:凡是final修饰的东西都具有了不变的特性: 2.修饰对象: 1)final+类--->类无法被继承: 2)final+方法--->方法无法被覆盖: 3)final ...

  8. Part 15 AngularJS ng init directive

    The ng-init directive allows you to evaluate an expression in the current scope.  In the following e ...

  9. mui中openWindow方法的通用封装

    因为做项目跳转新页面和传参的场景太多了,而且有的页面需要的跳转动画也不一样,每次都写一大堆openWindow方法的配置项太麻烦,因此自己简单封装了一个小函数,用来方便webview页面的跳转和传参. ...

  10. 使用 @Transactional 时常犯的N种错误

    @Transactional是我们在用Spring时候几乎逃不掉的一个注解,该注解主要用来声明事务.它的实现原理是通过Spring AOP在注解修饰方法的前后织入事务管理的实现语句,所以开发者只需要通 ...