使用ReactiveCocoa将元素信号转换为大小的数组

时间:2016-05-11 20:08:49

标签: arrays reactive-programming frp reactive-cocoa-4

我正试图找到一种方法来转换信号,该信号将X元素发送到受大小限制的X元素数组中。

类似的东西:

signal.take(2).collect()。observeNext {changes in     myFunction的(改变) }

但是在完成之后就死了。我需要它:

  • 采取2个元素
  • 将数组发送到函数
  • 重复

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我解决了这个任务(位置),这是我的解决方案

extention SignalProducer {
    func accumulate(size: Int) -> SignalProducer<[Value], Error> {
        var values: [Value] = []
        func next(value: Value) {
            if values.count >= size {
                values.removeAll()
            }
            values.append(value)
        }
        return on(next: next)
            .filter { _ in values.count < size }
            .map { _ -> [Value] in return values }
    }
}

https://github.com/ReactiveCocoa/ReactiveCocoa/pull/2817