Swift 如何使用RACScheduler创建循环RACSignal
是否有一种方法可以创建一个定时RAC信号,该信号在每个时间间隔都会发出值Swift 如何使用RACScheduler创建循环RACSignal,swift,reactive-cocoa,racsignal,Swift,Reactive Cocoa,Racsignal,是否有一种方法可以创建一个定时RAC信号,该信号在每个时间间隔都会发出值 我想知道除了创建一个调度计时器之外,是否还有其他方法?或者某种for循环。有!我想你在找我。它将发出当前的NSDate,这通常不是很有用,因此您可以使用它对另一个包含所需数据的信号进行采样。例如,对于常量值: [[RACSignal return:@20] sample:[RACSignal interval:1.0 onScheduler:[R
我想知道除了创建一个调度计时器之外,是否还有其他方法?或者某种for循环。有!我想你在找我。它将发出当前的
NSDate
,这通常不是很有用,因此您可以使用它对另一个包含所需数据的信号进行采样。例如,对于常量值:
[[RACSignal return:@20] sample:[RACSignal interval:1.0
onScheduler:[RACScheduler mainThreadScheduler]]];
编辑:
…或者你可以用mapReplace
替换
[[RACSignal interval:1.0 onScheduler:[RACScheduler mainThreadScheduler]] mapReplace:@20];
如果您希望在每次间隔滴答声时执行计算,而您没有将其作为另一个信号,则可以使用忽略其参数的法线映射
[[RACSignal interval:1.0 onScheduler:[RACScheduler mainThreadScheduler]] map:^(id x) {
return ...
}];
func dummySignal()->RACSignal{return RACSignal.createSignal({(sub:RACSubscriber!)->RACDisposable!in let timeFormatter=NSDateFormatter()timeFormatter.timeStyle=.MediumStyle sub.sendNext(timeFormatter.stringFromDate(NSDate()))return nil}func currentTimeSignal()->RACSignal{return dummySignal().sample(RACSignal.interval(1,onScheduler:RACScheduler.mainThreadScheduler())}我使用RACSignal.createSignal创建了一个新的dummySignal,我正在对其调用sample,但它似乎只触发一次…@EdwardAshak我不确定“仅触发一次”是什么意思sample
将只订阅基础信号一次,因此currentTimeSignal
应该是同一字符串的信号。如果你想在每个刻度上计算一些东西,请参阅我的编辑。谢谢@Ian Henry,mapReplace应该可以做到这一点。谢谢你的帮助