我正在使用 ReactiveCocoa 来更新UILabel
倒计时UIProgressView
:
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...
}];
这工作得很好,但是,我对count
变量或读取值self.progressView.progress
以减少它并不特别满意。
我觉得我应该能够吐出信号并直接使用RAC
宏绑定属性。就像是:
RACSignal *baseSignal = [[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
take: percentRemaining]
RAC(self, countLabel.text) = [baseSignal
map: ...
...
RAC(self, progressView.progress) = [baseSignal
map: ...
...
...
s 揭示了我被困在哪里。我无法完全理解如何编写RACSignal
不需要依赖状态变量的内容。
此外,当流完成时,我不确定在哪里/如何注入// Move along...
我需要的副作用。
我敢肯定,一旦您以正确的方式思考,两者都足够简单,但是,我们将不胜感激。