Skip(while:) 对 ReactiveSwift 中信号的调用被忽略
Skip(while:) call against a Signal in ReactiveSwift is being ignored
我有一个观察者反对在我的应用程序中生成项目计数的信号。理想情况下,我想跳过所有 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 })
使用过滤器不会影响信号,而是关注您是否应该观察传递的值。
我有一个观察者反对在我的应用程序中生成项目计数的信号。理想情况下,我想跳过所有 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 })
使用过滤器不会影响信号,而是关注您是否应该观察传递的值。