ReactiveCocoa之RAC过滤(八)

  1. -(void)skip{
  2. RACSubject*subject=[RACSubjectsubject];
  3. [[subjectskip:2]subscribeNext:^(idx){
  4. NSLog(@"%@",x);
  5. }];
  6. [subjectsendNext:@1];
  7. [subject@2];
  8. @3];
  9. }
  10. //distinctUntilChanged:--如果当前的值跟上一次的值一样,就不会被订阅
  11. -(void)distinctUntilChanged{
  12. subject];
  13. [[subjectdistinctUntilChanged]idx){
  14. NSLog(@"%@",x);
  15. }];
  16. //发送信号
  17. @2];//不会被订阅
  18. //take:可以屏蔽一些值,去前面几个值---这里take为2则只拿到前两个值
  19. void)take{
  20. take:2]//takeLast:和take的用法一样,不过他取的是最后的几个值,如下,则取的是最后两个值
  21. //注意点:takeLast一定要调用sendCompleted,告诉他发送完成了,这样才能取到最后的几个值
  22. void)takeLast{
  23. takeLast:2]//发送信号
  24. @1];
  25. @2];
  26. @3];
  27. sendCompleted];
  28. //takeuntil:---给takeuntil传的是哪个信号,那么当这个信号发送信号或sendCompleted,就不能再接受源信号的内容了。
  29. void)takeuntil{
  30. RACSubject*subject2=[RACSubjecttakeuntil:subject2] [subject2@3];//1
  31. //[subject2sendCompleted];//或2
  32. @4];
  33. }
  34. //ignore:忽略掉一些值
  35. void)ignore{
  36. //ignore:忽略一些值
  37. //ignoreValues:表示忽略所有的值
  38. //1.创建信号
  39. //2.忽略一些值
  40. RACSignal*ignoreSignal=[subjectignore://3.订阅信号
  41. [ignoreSignal//4.发送数据
  42. //一般和文本框一起用,添加过滤条件
  43. void)fliter{
  44. //只有当文本框的内容长度大于5,才获取文本框里的内容
  45. [[self.textField.rac_textSignalfilter:^BOOL(idvalue){
  46. //value源信号的内容
  47. return[valuelength]>5;
  48. //返回值就是过滤条件。只有满足这个条件才能获取内容
  49. }] }

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...