正在忽略对ReactiveSwift中的信号的Skip(while :)调用

问题描述 投票:0回答:1

我有一个观察者反对在我的应用程序中产生项目计数的信号。理想情况下,我想跳过所有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通过。

ios swift reactive-swift
1个回答
0
投票

所以我的方法是不正确的,因为skip(while:)仅适用于信号的开始。由于初始值满足其标准,信号被允许继续,并且未来忽略skip(while:)检查。

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

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

使用滤波器不会影响信号,而是关注您是否应该观察传递的值。

© www.soinside.com 2019 - 2024. All rights reserved.