filter
//filter一般用于文本框
//当文本框内容长度大于5才处理
[[self.filter.rac_textSignal filter:^BOOL(id value) {
//value:源信号的内容
return ([value length] > 5);
}] subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
ignore
//ignore:忽略一些值
//ignoreValues:忽略所有值
RACSubject *subject = [RACSubject subject];
[[subject ignore:@1] subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
[subject sendNext:@1];
take
//take:取前面几个值
//takeLast:取后面多少个值,必须要发送完成
//takeUntil:只要传入信号发送完成或者发送任意的数据,就不会再接收源信号的内容
RACSubject *subject = [RACSubject subject];
[[subject take:2] subscribeNext:^(id x) {
NSLog(@"取前面的信号:%@",x);
}];
[subject sendNext:@1];
[subject sendNext:@2];
[subject sendNext:@3];
RACSubject *subject2 = [RACSubject subject];
[[subject2 takeLast:2] subscribeNext:^(id x) {
NSLog(@"取后面的信号:%@",x);
}];
[subject2 sendNext:@1];
[subject2 sendNext:@2];
[subject2 sendNext:@3];
[subject2 sendCompleted];
RACSubject *subject3 = [RACSubject subject];
RACSubject *signal = [RACSubject subject];
[[subject3 takeUntil:signal]subscribeNext:^(id x) {
NSLog(@"第三个信号:%@",x);
}];
[subject3 sendNext:@1];
// [signal sendCompleted];
[signal sendNext:@1];
//下面信号不会再接收
[subject3 sendNext:@2];
[subject3 sendNext:@3];
distinctUntilChanged
//值发生明显变化时才接收信号
RACSubject *subject = [RACSubject subject];
[[subject distinctUntilChanged]subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
//只会接收一次
[subject sendNext:@1];
[subject sendNext:@1];
[subject sendNext:@1];
[subject sendNext:@1];
skip
//跳过几个信号
RACSubject *subject = [RACSubject subject];
[[subject skip:2]subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
[subject sendNext:@1];
[subject sendNext:@2];
[subject sendNext:@3];