1

オブジェクトの信号が 2 つありEventます。Eventオブジェクトにはdate、イベントが作成された日付に設定されるプロパティがあります。2 つのシグナルは、作成時にイベントを送信します。

次のような 3 番目のシグナルを作成したいと考えています。

  • event2.dateのいずれかの側で 1 秒以内に収まるときevent1.date、両方のイベントを含むタプルを送信します
  • 最新の から 1 秒が経過し、event1.date最新event2dateが有効な範囲内に収まらない場合、 のみを含むタプルを送信します。event1

最初の基準を使用してタプルをフィルタリングするシグナルを作成するためにcombineLatest:andを使用しています。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;
    }];

両方の基準を組み込んだシグナルを作成するにはどうすればよいですか?

4

1 に答える 1