RAC中常见的高级用法-过滤
- (void)filter
{
//只有当我们文本框内容长度大于5才想要获取文本框的内容
[[_passWord.rac_textSignal filter:^BOOL(id value) {
//value:源信号的内容
return [value length] > 5;
//返回值就是过滤的条件,只有满足这个条件才能获取到内容
}] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
}
- (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"];
}
- (void)distinctUntilChanged
{
//distinctUntilChanged:如果当前的值跟上一个值相同就不会被调用到
//创建信号
RACSubject *subject = [RACSubject subject];
[[subject distinctUntilChanged] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
[subject sendNext:@"HMJ"];
[subject sendNext:@"HMJ"];
[subject sendNext:@"HMJ"];
}
- (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"];
}
- (void)switchToLatest
{
RACSubject *signalOfSignal = [RACSubject subject];
RACSubject *signal = [RACSubject subject];
// 获取信号中信号最近发出信号,订阅最近发出的信号。
// 注意switchToLatest:只能用于信号中的信号
//订阅信号
[signalOfSignal.switchToLatest subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//发送信号
[signalOfSignal sendNext:signal];
[signal sendNext:@"signal"];
}
- (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中常见的高级用法-过滤的更多相关文章
- RAC中常见的高级用法-bind方法
RAC操作思想: Hook(钩子)思想 RAC核心方法:bind bind方法 假设想监听文本框的内容,并且在每次输出结果的时候,都在文本框的内容拼接一段文字" ...
- RAC中常见的高级用法-组合
组合: concat组合: 按一定顺序执行皇上与皇太子关系 concat底层实现: 1.当拼接信号被订阅,就会调用拼接信号的didSubscribe 2.didSu ...
- 详解Vue中watch的高级用法
我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: <div> <p>FullName: {{fullName} ...
- linux中find命令高级用法
前言 在<Linux中的文件查找技巧>一文中,我们已经知道了文件查找的基本方法,今天我们介绍find命令的一些高级使用技巧.它能满足我们一些更加复杂的需求. 查找空文件或空目录 有时候需要 ...
- pymongo常见的高级用法
pymongo是python中基于mongodb数据库开发出来的,比mongoengine要高级一些,也要好用一些. 基本的增删查改就不说了 insert() delete() find() upda ...
- SQL语句中的select高级用法
#转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...
- Flutter 中渐变的高级用法
Flutter 中渐变有三种: LinearGradient:线性渐变 RadialGradient:放射状渐变 SweepGradient:扇形渐变 看下原图,下面的渐变都是在此图基础上完成. Li ...
- 随机记录工作中常见的sql用法错误(一)
没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...
- Sql server存储过程中常见游标循环用法
用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE ), ), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELE ...
随机推荐
- uni-app app端设置全屏背景色
设置page:{样式},博主调试的时候在app端不起作用,设置配置文件的backgroundColor也没有用,所以博主就使用了一个稍微比较偏的办法解决了,没有用获取设备信息的api来实现 具体操作就 ...
- [python]Robotframework+Git+jenkins实现持续集成并生成测试报告发送邮件
1.环境需求 &robotframework(不写搭建,自行百度) & git(不写安装,自行百度) &jenkins 2.安装jenkins 官网下载最新版本https:// ...
- mybatis替换成mybatisplus后报错mybatisplus Invalid bound statement (not found):
项目原来是mybatis,之后由于生成代码不方便,觉得替换成mybatisplus,引入mybatisplus后,启动项目报错mybatisplus Invalid bound statement ( ...
- springboot利用mock进行junit单元测试,测试controller
1 spring-boot-starter-test内置mockito,添加pom依赖 <dependency> <groupId>org.springframework.b ...
- 在Jenkins中执行 PowerShell 命令实现高效的CD/CI部署
相比于cmd,powershell支持插件.语法扩展和自定义扩展名,是智能化部署中闪闪的新星,越来越多的开发者偏爱使用Powershell. 如何让Jenkins支持Powershell呢?本文即展开 ...
- k8s网络模型与集群通信
在k8s中,我们的应用会以pod的形式被调度到各个node节点上,在设计集群如何处理容器之间的网络时是一个不小的挑战,今天我们会从pod(应用)通信来展开关于k8s网络的讨论. 小作文包含如下内容: ...
- OpenStack平台的使用
一.OpenStack平台的使用 使用双节点部署,192.168.16.10为控制节点.192.168.16.20为计算节点. (一).创建镜像 1.在控制节点中找到qcow2镜像 [root@con ...
- [noi712]练级
先考虑一个联通块,可以发现这个联通快内不会存在两个偶数的点证明:如果存在,那么这两个点的某一条路径上的边全部反过来,可以使答案+2,即答案为点数或点数-1同时,发现答案的奇数点数一定与边数同奇偶,那么 ...
- [loj4]Quine
很有趣的一道题目,如何让一个程序输出自身如果用字符串s表示程序,那么意味着可以通过s来输出sprintf是一个可以利用的函数,相当于要求printf(s,s)输出的就是s那么只需要在s中加入%c和%d ...
- [源码解析] PyTorch 分布式(9) ----- DistributedDataParallel 之初始化
[源码解析] PyTorch 分布式(9) ----- DistributedDataParallel 之初始化 目录 [源码解析] PyTorch 分布式(9) ----- DistributedD ...