我开始尝试使用 SwiftUI,但我想要最新的 5 个滑块组合。我有 4 个滑块的所有工作,使用CombineLatest4,然后意识到我需要另一个滑块,但没有CombineLatest5.
任何帮助表示赞赏。
澄清工作 4-slider 版本:
Publishers
.CombineLatest4($slider1, $slider2, $slider3, $slider4)
.debounce(for: 0.3, scheduler: DispatchQueue.main)
.subscribe(subscriber)
Run Code Online (Sandbox Code Playgroud)
好的,弄清楚语法,@Daniel-t 是对的。我只需要创建子发布商:
let paramsOne = Publishers
.CombineLatest3($slider1, $slider2, $slider3)
let paramsTwo = Publishers
.CombineLatest($slider4, $slider5)
paramsOne.combineLatest(paramsTwo)
.debounce(for: 0.3, scheduler: DispatchQueue.main)
.subscribe(subscriber)
Run Code Online (Sandbox Code Playgroud)
请注意,我还必须将订阅者期望的输入内容从 更改(Double, Double, Double, Double, Double)为((Double, Double, Double), (Double, Double)),并且编译器给了我一个误导性和令人困惑的错误(关于调度程序),直到我发现输入类型是错误的。
注意 - 从问题中提取的解决方案
好吧,弄清楚语法,@Daniel-t 是对的。我只需要创建子发布商:
let paramsOne = Publishers
.CombineLatest3($slider1, $slider2, $slider3)
let paramsTwo = Publishers
.CombineLatest($slider4, $slider5)
paramsOne.combineLatest(paramsTwo)
.debounce(for: 0.3, scheduler: DispatchQueue.main)
.subscribe(subscriber)
Run Code Online (Sandbox Code Playgroud)
请注意,我还必须更改我的订户期望的输入 from (Double, Double, Double, Double, Double),((Double, Double, Double), (Double, Double))并且编译器给了我一个误导性和令人困惑的错误(有关调度程序的信息),直到我发现输入类型是错误的。
CombineLatest2(CombineLatest3, CombineLatest2) 应该做的伎俩,不是吗?
| 归档时间: |
|
| 查看次数: |
1032 次 |
| 最近记录: |