Интересно, возможно ли накапливать результаты сигналов, происходящих между next
s определенного сигнала. Похожий на
[[[RACSignal
combineLatest:@[signal1, signal2, signal3]]
takeUntil:signal4]
subscribeNext:^(id x) {
// ...
}];
Но не завершая после первых signal4
next
.
Сценарий, с которым я работаю, заключается в том, что у меня есть viewController1
, представляющий viewController2
. viewController2
позволяет пользователю изменять object
, что влияет на данные, представленные в viewController1
. Сейчас я выставляю objectChangedSignal
на viewController2
и слушаю с viewController1
.
Однако я хотел бы получать изменения object
непосредственно от viewController1
, но только после того, как он выдаст сигнал viewWillAppear
, и только если изменения произошли после viewWillDisappear
из viewController1
.
Надеюсь, это имеет смысл, спасибо.
s1
,s2
иs3
не обязательно сработают. Но если они это сделают, я хочу получить уведомление только после того, какs4
уволится. 25.02.2014s1
,s2
илиs3
не отправляет значение, то-combineLatest:
никогда не отправит значение — он ждет, пока каждый из переданных ему сигналов не отправит значение, прежде чем отправить кортеж значений. (С этим можно справиться, например, с помощью-startWith:
.) Также звучит так, будто-[takeUntil:s4]
— это не то, что вам нужно, так как это завершает сигнал, когда срабатываетs4
. Возможно, вам нужна одна из-skipUntilBlock:
,-skipWhileBlock:
или-if:then:else:
операций? 25.02.2014