Dzielenie sygnału RACSignal w celu wyeliminowania stanu
Używam ReactiveCocoa do aktualizacji aUILabel
aUIProgressView
odlicza:
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...
}];
To działa dobrze, ale nie jestem szczególnie zadowolony z obucount
zmienna lub z odczytem wartościself.progressView.progress
w celu zmniejszenia tego.
Czuję, że powinienem być w stanie pluć sygnałem i wiązać właściwości bezpośrednio za pomocąRAC
makro. Coś jak:
RACSignal *baseSignal = [[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
take: percentRemaining]
RAC(self, countLabel.text) = [baseSignal
map: ...
...
RAC(self, progressView.progress) = [baseSignal
map: ...
...
The...
s ujawniają, gdzie utknąłem. Nie do końca rozumiem, jak komponowaćRACSignal
tak, że nie muszę polegać na zmiennej stanu.
Dodatkowo nie jestem pewien, gdzie / jak wstrzyknąć// Move along...
Efekt uboczny, którego potrzebuję po zakończeniu strumienia.
Jestem pewien, że oba są wystarczająco proste, gdy myślisz o właściwej drodze, ale każda pomoc byłaby naprawdę doceniana.