// 跳躍 : 如下田炭,skip傳入2 跳過前面兩個值
// 實際用處: 在實際開發(fā)中比如 后臺返回的數(shù)據(jù)前面幾個沒用鞭执,我們想跳躍過去,便可以用skip
- (void)skip {
RACSubject *subject = [RACSubject subject];
[[subject skip:2] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
[subject sendNext:@1];
[subject sendNext:@2];
[subject sendNext:@3];
}
//distinctUntilChanged:-- 如果當(dāng)前的值跟上一次的值一樣刊咳,就不會被訂閱到
- (void)distinctUntilChanged {
RACSubject *subject = [RACSubject subject];
[[subject distinctUntilChanged] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
// 發(fā)送信號
[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);
}];
// 發(fā)送信號
[subject sendNext:@1];
[subject sendNext:@2];
[subject sendNext:@3];
}
//takeLast:和take的用法一樣,不過他取的是最后的幾個值,如下延届,則取的是最后兩個值
//注意點:takeLast 一定要調(diào)用sendCompleted椭符,告訴他發(fā)送完成了荔燎,這樣才能取到最后的幾個值
- (void)takeLast {
RACSubject *subject = [RACSubject subject];
[[subject takeLast:2] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
// 發(fā)送信號
[subject sendNext:@1];
[subject sendNext:@2];
[subject sendNext:@3];
[subject sendCompleted];
}
// takeUntil:---給takeUntil傳的是哪個信號,那么當(dāng)這個信號發(fā)送信號或sendCompleted艰山,就不能再接受源信號的內(nèi)容了湖雹。
- (void)takeUntil {
RACSubject *subject = [RACSubject subject];
RACSubject *subject2 = [RACSubject subject];
[[subject takeUntil:subject2] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
// 發(fā)送信號
[subject sendNext:@1];
[subject sendNext:@2];
[subject2 sendNext:@3]; // 1
// [subject2 sendCompleted]; // 或2
[subject sendNext:@4];
}
// ignore: 忽略掉一些值
- (void)ignore {
//ignore:忽略一些值
//ignoreValues:表示忽略所有的值
// 1.創(chuàng)建信號
RACSubject *subject = [RACSubject subject];
// 2.忽略一些值
RACSignal *ignoreSignal = [subject ignore:@2]; // ignoreValues:表示忽略所有的值
// 3.訂閱信號
[ignoreSignal subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
// 4.發(fā)送數(shù)據(jù)
[subject sendNext:@2];
}
// 一般和文本框一起用,添加過濾條件
- (void)fliter {
// 只有當(dāng)文本框的內(nèi)容長度大于5曙搬,才獲取文本框里的內(nèi)容
[[self.textField.rac_textSignal filter:^BOOL(id value) {
// value 源信號的內(nèi)容
return [value length] > 5;
// 返回值 就是過濾條件。只有滿足這個條件才能獲取到內(nèi)容
}] subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
}
注:轉(zhuǎn)載自http://blog.csdn.net/y_csdnblog_xx/article/details/51480542