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. CSS学习(二)选择符

    元素选择符:以元素名作为选择符(span{ color: red; }) 群组选择符:将两个选择符用逗号隔开构成群组(span, div{ color: red; }) 通用选择符:通用选择符(*)将 ...

  2. Matlab画colormap的一种色彩搭配方法

    声学与振动数据分析经常需要画colormap,来识别是结构频率共振,还是激励源阶次问题,比如图1,横坐标表示电机的转速,负值表示CW(顺时针)方向转动,正值表示CCW逆时针方向转动.Y轴表示对应的声音 ...

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

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

  4. PTA 银行排队问题之单队列多窗口服务 (25分)

    PTA 银行排队问题之单队列多窗口服务 (25分) 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙.当有窗口空闲时,下一位顾客即去该窗口处理事务.当有多个窗口可选 ...

  5. Xshell Error Report,Program has stopped working

    xftp和xshell突然都无法运行并报错如图 图中的意思是,xshell有错误,官方想收集错误.可是也不能给你发送了,还这样啊. 解决办法 1.卸载Xshell和Xftp,重新安装. 参考:http ...

  6. 动态代理中newProxyInstance中三个参数

     JDK Proxy(代理对象): Proxy.newProxyInstance 方法的三个参数创建代理对象 增强 person对象 使用代理对象代替person 去执行 doCourt方法参数1 类 ...

  7. webpack 项目接入Vite的通用方案介绍(上)

    愿景 希望通过本文,能给读者提供一个存/增量项目接入Vite的点子,起抛砖引玉的作用,减少这方面能力的建设成本 在阐述过程中同时也会逐渐完善webpack-vite-serve这个工具 读者可直接fo ...

  8. vue项目在打包时,去掉所有的console.log输出

    npm i babel-plugin-transform-remove-console -S const proPlugins = [];// 开发环境 不做操作 // 生产环境,去掉console ...

  9. [loj6051]PATH

    (不妨将下标改为从1开始) 参考loj2265中关于杨表的相关知识 构造一个$n$行且第$i$行有$a_{i}$个格子的杨表,依次记录其每一次增加的时间(范围为$[1,\sum_{i=1}^{n}a_ ...

  10. [atAGC029F]Construction of a tree

    构造一张二分图,左边是$n$个点,右边是$n-1$个集合,按照点属于集合连边 定义一组匹配的意义,即说明该点的父亲在该集合中选择 利用dinic求出二分图的最大匹配,若不为$n-1$则无解,否则考虑如 ...