一 满足条件才能拿到值
- (
void
)filter
{
// 只有当我们文本框的内容长度大于 5, 才想要获取文本框的内容
[[_textField.rac_textSignal filter:^ BOOL ( id value) {
// value: 源信号的内容
return [value length] > 5;
// 返回值 , 就是过滤条件 , 只有满足这个条件 , 才能能获取到内容
}] subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
// 只有当我们文本框的内容长度大于 5, 才想要获取文本框的内容
[[_textField.rac_textSignal filter:^ BOOL ( id value) {
// value: 源信号的内容
return [value length] > 5;
// 返回值 , 就是过滤条件 , 只有满足这个条件 , 才能能获取到内容
}] subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
}
二 忽略一些发送的值
- (
void
)ignore
{
// ignore: 忽略一些值
// ignoreValues: 忽略所有的值
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
{
// ignore: 忽略一些值
// ignoreValues: 忽略所有的值
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
// 2.
忽略一些
RACSignal *ignoreSignal = [subject ignoreValues];
// [subject
ignore:
@“1”]
// 3. 订阅信号
[ignoreSignal subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
// 4. 发送数据
[subject sendNext: @"13" ];
[subject sendNext: @"2" ];
[subject sendNext: @"44" ];
}
三 节选取得发送信号
- (
void
)take
{
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
RACSubject *signal = [RACSubject subject];
// take: 取前面几个值
{
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
RACSubject *signal = [RACSubject subject];
// take: 取前面几个值
// takeLast:
取后面多少个值
.
必须要发送完成(
[signal sendCompleted])
// takeUntil:
只要传入信号发送完成或者发送任意数据(
[signal sendNext:@1];
[signal sendCompleted]; ),
就不能在接收源信号的内容
[[subject takeUntil:signal] subscribeNext:^(
id
x) {
NSLog(@"%@",x);
}];
//[subject takeLast:2] [subject take:2]
[subject sendNext: @"1" ];
// [signal sendNext:@1];
// [signal sendCompleted];
[signal sendError: nil ];
[subject sendNext: @"2" ];
[subject sendNext: @"3" ];
}
四 发送信号的值不同才能被接收到(开发中使用:相同数据UI不做处理)
- (
void
)distinctUntilChanged
{
// distinctUntilChanged: 如果当前的值跟上一个值相同 , 就不会被订阅到
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
[[subject distinctUntilChanged] subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
[subject sendNext: @"1" ];
[subject sendNext: @"2" ];
[subject sendNext: @"2" ];
{
// distinctUntilChanged: 如果当前的值跟上一个值相同 , 就不会被订阅到
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
[[subject distinctUntilChanged] subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
[subject sendNext: @"1" ];
[subject sendNext: @"2" ];
[subject sendNext: @"2" ];
}
五 忽略前几个信号(应用:服务器返回的前几个数据没用)
// skip;
跳跃几个值
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
[[subject skip:2] subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
[subject sendNext: @"1" ];
[subject sendNext: @"2" ];
// 1. 创建信号
RACSubject *subject = [RACSubject subject];
[[subject skip:2] subscribeNext:^( id x) {
NSLog( @"%@" ,x);
}];
[subject sendNext: @"1" ];
[subject sendNext: @"2" ];
[subject sendNext:@"3"];