1
我有兩個信號Event
對象。 Event
對象具有date
屬性,該屬性設置爲創建事件的日期。這兩個信號在創建時發送事件。使用值以及當前日期來過濾ReactiveCocoa信號
我想創建的第三信號,其中:
- 當上的
event1.date
任一側在1秒內event2.date
下降時,發送包含兩個事件 當後最近
- 一個元組,和最近
event2
的date
不在有效範圍內,發送一個元組只包含event1
event1.date
1秒傳遞
我我們荷蘭國際集團combineLatest:
和filter
創建使用的第一準則,其過濾的元組的信號:
[[RACSignal combineLatest:@[ signal1, signal2 ]]
filter:^BOOL(RACTuple *tuple) {
RACTupleUnpack(Event *event1, Event *event2) = tuple;
NSDate *startDate = [event1.date dateByAddingTimeInterval:-1];
NSDate *endDate = [event1.date dateByAddingTimeInterval:1];
if ([event2.date compare:startDate] == NSOrderedAscending) return NO;
if ([event2.date compare:endDate] == NSOrderedDescending) return NO;
return YES;
}];
我怎樣才能讓這既包括標準的信號?
我不能肯定,這將有助於在這裏,但你看着['-bufferWithTime:onScheduler:'](https://github.com/ReactiveCocoa/ReactiveCocoa/blob/master/ReactiveCocoaFramework/ReactiveCocoa /RACSignal%2BOperations.h#L137)? –
我不確定我是否理解您的要求,但是是否是兩個相反的標準?換句話說,你是說在'signal1'或'signal2'上發送的值總是會導致發送'(event1)'或'(event1,event2)'?我問,因爲如果是這樣,你可以改變你的'-filter:'到'-map:',然後用前者(只是'event1'的元組)替換'NO'布爾值,並替換'YES'布爾值與後者('event1'和'event2'的元組)。 – erikprice
從我讀到的問題中,您已經得到了解決方案@erikprice。 –