Aufteilen eines RACSignals, um den Status zu beseitigen

Ich verwende ReactiveCocoa, um a zu aktualisierenUILabel während aUIProgressView zählt herunter:

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...
    }];

Das funktioniert gut genug, aber ich bin auch nicht besonders zufrieden mit demcount Variable oder mit dem Lesen des Wertes vonself.progressView.progress um es zu dekrementieren.

Ich habe das Gefühl, ich sollte in der Lage sein, das Signal zu spucken und die Eigenschaften direkt mit dem zu bindenRAC Makro. So etwas wie:

RACSignal *baseSignal = [[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
                            take: percentRemaining]

RAC(self, countLabel.text) = [baseSignal
                                  map: ...
                                  ...

RAC(self, progressView.progress) = [baseSignal
                                        map: ...
                                        ...

Das...s verraten, wo ich stecke. Ich kann mich nicht so recht vorstellen, wie man das komponiertRACSignal so dass ich mich nicht auf eine Zustandsvariable verlassen muss.

Außerdem bin ich mir nicht sicher, wo / wie ich das spritzen soll// Move along... Nebeneffekt brauche ich, wenn der Stream abgeschlossen ist.

Ich bin mir sicher, dass beide einfach genug sind, wenn Sie einmal richtig überlegt haben, aber jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage