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



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

所以我的方法不正确,因为skip(while:)只在信号开始时应用。由于初始值满足其标准,因此允许信号继续,并且忽略skip(while:)检查。

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

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

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

相关内容

  • 没有找到相关文章

最新更新