Dividindo um sinal RACS para eliminar o estado
Estou usando o ReactiveCocoa para atualizar umUILabel
enquanto umUIProgressView
conta abaixo:
NSInteger percentRemaining = ...;
self.progressView.progress = percentRemaining / 100.0;
__block NSInteger count = [self.count];
[[[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
take: percentRemaining]
subscribeNext:^(id x) {
count++;
self.countLabel.text = [NSString stringWithFormat:@"%d", count];
self.progressView.progress = self.progressView.progress - 0.01;
} completed:^{
// Move along...
}];
Isso funciona bem, mas eu não estou particularmente feliz com ocount
variável ou com a leitura do valor deself.progressView.progress
a fim de diminuí-lo.
Eu sinto que deveria ser capaz de cuspir o sinal e ligar as propriedades diretamente usando oRAC
macro. Algo como:
RACSignal *baseSignal = [[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
take: percentRemaining]
RAC(self, countLabel.text) = [baseSignal
map: ...
...
RAC(self, progressView.progress) = [baseSignal
map: ...
...
o...
s revelar onde estou preso. Eu não consigo entender como compor oRACSignal
de tal forma que eu não precise confiar em uma variável de estado.
Além disso, não tenho certeza onde / como injetar// Move along...
efeito colateral que eu preciso quando o fluxo é concluído.
Tenho certeza de que ambos são simples o suficiente uma vez que você está pensando do jeito certo, mas qualquer ajuda seria muito apreciada.