ReactiveCocoa之RAC过滤(八)
来源:互联网 发布:大数据对零售业 编辑:程序博客网 时间:2024/06/01 10:02
- - (void)skip {
- RACSubject *subject = [RACSubject subject];
- [[subject skip:2] subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- [subject sendNext:@1];
- [subject sendNext:@2];
- [subject sendNext:@3];
- }
- //distinctUntilChanged:-- 如果当前的值跟上一次的值一样,就不会被订阅到
- - (void)distinctUntilChanged {
- RACSubject *subject = [RACSubject subject];
- [[subject distinctUntilChanged] subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- // 发送信号
- [subject sendNext:@1];
- [subject sendNext:@2];
- [subject sendNext:@2]; // 不会被订阅
- }
- // take:可以屏蔽一些值,去前面几个值---这里take为2 则只拿到前两个值
- - (void)take {
- RACSubject *subject = [RACSubject subject];
- [[subject take:2] subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- // 发送信号
- [subject sendNext:@1];
- [subject sendNext:@2];
- [subject sendNext:@3];
- }
- //takeLast:和take的用法一样,不过他取的是最后的几个值,如下,则取的是最后两个值
- //注意点:takeLast 一定要调用sendCompleted,告诉他发送完成了,这样才能取到最后的几个值
- - (void)takeLast {
- RACSubject *subject = [RACSubject subject];
- [[subject takeLast:2] subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- // 发送信号
- [subject sendNext:@1];
- [subject sendNext:@2];
- [subject sendNext:@3];
- [subject sendCompleted];
- }
- // takeUntil:---给takeUntil传的是哪个信号,那么当这个信号发送信号或sendCompleted,就不能再接受源信号的内容了。
- - (void)takeUntil {
- RACSubject *subject = [RACSubject subject];
- RACSubject *subject2 = [RACSubject subject];
- [[subject takeUntil:subject2] subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- // 发送信号
- [subject sendNext:@1];
- [subject sendNext:@2];
- [subject2 sendNext:@3]; // 1
- // [subject2 sendCompleted]; // 或2
- [subject sendNext:@4];
- }
- // ignore: 忽略掉一些值
- - (void)ignore {
- //ignore:忽略一些值
- //ignoreValues:表示忽略所有的值
- // 1.创建信号
- RACSubject *subject = [RACSubject subject];
- // 2.忽略一些值
- RACSignal *ignoreSignal = [subject ignore:@2]; // ignoreValues:表示忽略所有的值
- // 3.订阅信号
- [ignoreSignal subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- // 4.发送数据
- [subject sendNext:@2];
- }
- // 一般和文本框一起用,添加过滤条件
- - (void)fliter {
- // 只有当文本框的内容长度大于5,才获取文本框里的内容
- [[self.textField.rac_textSignal filter:^BOOL(id value) {
- // value 源信号的内容
- return [value length] > 5;
- // 返回值 就是过滤条件。只有满足这个条件才能获取到内容
- }] subscribeNext:^(id x) {
- NSLog(@"%@", x);
- }];
- }
0 0
- ReactiveCocoa之RAC过滤(八)
- ReactiveCocoa之RAC过滤(八)
- ReactiveCocoa之RAC映射(七)
- ReactiveCocoa之RAC合并(九)
- ReactiveCocoa之RAC映射(七)
- ReactiveCocoa之RAC合并(九)
- ReactiveCocoa之RAC常用宏(十)
- ReactiveCocoa之RAC内存管理(十二)
- ReactiveCocoa之RAC常用宏(十)
- ReactiveCocoa之RAC宏展开解析【iOS源码阅读】
- ReactiveCocoa v2.5 (RAC) 源码解析之架构总览
- iOS开发之ReactiveCocoa框架(RAC)第一篇
- XZ_iOS之RAC(ReactiveCocoa)的介绍和使用
- iOS- ReactiveCocoa-RAC-1
- 一、ReactiveCocoa(RAC)配置
- ReactiveCocoa(RAC)学习
- ReactiveCocoa 浅谈RAC-(一)
- iOS RAC~ReactiveCocoa 方法作用
- cookie与session学习笔记 -- day01 会话介绍
- 排序算法:希尔排序(更高效的插入法排序)
- HashMap、HashTable有哪些区别
- Rxjava+ReTrofit+okHttp深入浅出-终极封装三(文件上传)
- HDU 3695 Computer Virus on Planet Pandora AC自动机
- ReactiveCocoa之RAC过滤(八)
- 浅拷贝深拷贝
- 留言板
- SPOJ 3943 Nested Dolls
- Rxjava(变换类)--FlatMap2
- Android之QQ聊天气泡对话实现
- lower_bound/upper_bound(STL)
- 从源码上深度剖析View invalidate 、 postInvalidate、requestLayout
- Java小程序祝国庆快乐