Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何使用RACScheduler创建循环RACSignal_Swift_Reactive Cocoa_Racsignal - Fatal编程技术网

Swift 如何使用RACScheduler创建循环RACSignal

Swift 如何使用RACScheduler创建循环RACSignal,swift,reactive-cocoa,racsignal,Swift,Reactive Cocoa,Racsignal,是否有一种方法可以创建一个定时RAC信号,该信号在每个时间间隔都会发出值 我想知道除了创建一个调度计时器之外,是否还有其他方法?或者某种for循环。有!我想你在找我。它将发出当前的NSDate,这通常不是很有用,因此您可以使用它对另一个包含所需数据的信号进行采样。例如,对于常量值: [[RACSignal return:@20] sample:[RACSignal interval:1.0 onScheduler:[R

是否有一种方法可以创建一个定时RAC信号,该信号在每个时间间隔都会发出值


我想知道除了创建一个调度计时器之外,是否还有其他方法?或者某种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应该可以做到这一点。谢谢你的帮助