Monday 15 September 2014

ios - ReactiveCocoa: how to keep signal until the server is connected? -



ios - ReactiveCocoa: how to keep signal until the server is connected? -

i have 2 signals (racsignal):

synchronizetoserversignal: signal containing info sent server. serverconnectionsignal: signal containing boolean value indicate connection state.

the synchronizetoserversignal triggered when content changed, , signal controlled serverconnectionsignal:

if latest value of serverconnectionsignal yes, synchronizetoserversignal maintain sending next value (data). if latest value of serverconnectionsignal no, synchronizetoserversignal maintain holding latest value , discarding old values. 1 time serverconnectionsignal sends yes, serverconnectionsignal maintain sending next value again.

how utilize reactivecocoa accomplish this?

replaylast give signal holds onto latest value sent , discards old values. if:then:else: allows switch between 2 signals based on value of 3rd boolean signal.

but switch between? since want ignore values, can utilize [racsignal empty] -- switching between signal useful value , signal no values:

[racsignal if:serverconnectionsignal then:[synchronizetoserversignal replaylast] else:[racsignal empty]] subscribenext:^(id x) { // sync here }];

the intent of code made lot more clear helper method in category, though:

@implementation racsignal (helpers) - (racsignal *)guard:(racsignal *)boolsignal { homecoming [racsignal if:boolsignal then:self else:[racsignal empty]]; } @end

then can write:

[[synchronizetoserversignal replaylast] guard:serverconnectionsignal]

much more clear!

ios reactive-cocoa

No comments:

Post a Comment