在ReactiveSwift中对信号的跳过(while :)调用被忽略

时间:2018-09-03 16:23:00

标签: ios swift reactive-swift

我有一个观察者,对一个在我的应用中产生商品计数的信号进行观察。理想情况下,我想跳过所有0值,我尝试使用以下代码段进行此操作:

viewModel.itemCount.signal
    .skipRepeats()
    .skip(while: { itemCount -> Bool in return itemCount == 0 })
    .observeValues { itemCount in
        print("Item count: \(itemCount)") // Will still print 0
}

不幸的是,它仍然允许0值通过。

1 个答案:

答案 0 :(得分:0)

所以我的方法是错误的,因为skip(while:)仅在信号开始时才应用。由于初始值满足其标准,因此允许信号继续进行,并且以后继续忽略skip(while:)检查。

正确的调用是filter(:)命令,如下所示:

.filter({ itemCount -> Bool in return itemCount != 0 })

使用过滤器不会影响信号,而是着眼于是否应观察传递的值。