Dividiendo una señal RAC para eliminar el estado
Estoy usando ReactiveCocoa para actualizar unUILabel
mientras que unUIProgressView
cuenta regresiva
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...
}];
Esto funciona bastante bien, pero no estoy particularmente contento con elcount
variable o con la lectura del valor deself.progressView.progress
para decrementarlo.
Siento que debería poder escupir la señal y unir las propiedades directamente usando elRAC
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: ...
...
los...
s revelar donde estoy atrapado. No puedo entender cómo componer elRACSignal
de tal manera que no necesito confiar en una variable de estado.
Además, no estoy seguro de dónde / cómo inyectar el// Move along...
efecto secundario que necesito cuando la secuencia se completa.
Estoy seguro de que ambos son lo suficientemente simples una vez que estás pensando en la forma correcta, pero cualquier ayuda sería realmente apreciada.