- (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);
}];
}
ReactiveCocoa(八) 之RAC過濾
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 前言 之前對RAC有了一個基本的認(rèn)識,了解了它的作用,以及RAC的運(yùn)行機(jī)制,我們知道只要是信號(RACSignal...
- 1.ReactiveCocoa常見操作方法介紹1.1 ReactiveCocoa操作須知所有的信號(RACSign...
- 1.ReactiveCocoa簡介 ReactiveCocoa(簡稱為RAC),是由Github開源的一個應(yīng)用于i...
- 前言由于時間的問題,暫且只更新這么多了,后續(xù)還會持續(xù)更新本文《最快讓你上手ReactiveCocoa之進(jìn)階篇》,目...