Swift 从不更新的动态列表中合并发布服务器 背景
我有几个需要分组的发布者,在本例中有Swift 从不更新的动态列表中合并发布服务器 背景,swift,combine,Swift,Combine,我有几个需要分组的发布者,在本例中有varA(发布者A1)、varB(发布者B1)和varC(发布者C1..n的数组)。C语言中的发布者阵列是动态的,因为它们在不断变化。然而,varC的发布者列表在启动时只评估过一次,而CombineLatest从未真正订阅发布者列表。当我向列表中添加或删除组合器时,发布者并不注意它 下面是这个问题的一个非常简化的版本 class GenericModel:ObservableObject{ @已发布变量dynamicList:[可发布]=[] lazy let
varA
(发布者A1)、varB
(发布者B1)和varC
(发布者C1..n的数组)。C语言中的发布者阵列是动态的,因为它们在不断变化。然而,varC
的发布者列表在启动时只评估过一次,而CombineLatest从未真正订阅发布者列表。当我向列表中添加或删除组合器时,发布者并不注意它
下面是这个问题的一个非常简化的版本
class GenericModel:ObservableObject{
@已发布变量dynamicList:[可发布]=[]
lazy let varA=Just(1)
lazy-let-varB=Just(2)
var varC:AnyPublisher{
返回publisher.MergeMany(self.dynamicList.map{$0.getPublisher})
.collect()
.删除任何发布者()
}
惰性变量组合器:AnyPublisher={
出版商。联合测试3(
瓦拉,
瓦布,
varC
).map{v1、v2、v3英寸
返回v1==0&&v2==0&&v3.allsuccess({$0==0})
}.删除任何发布者()
}()
}
在本例中,我订阅了combiner
。但是,无论何时运行,varC中的值总数都是0。这一点也可以通过打开varC
s闭包得到证实,该闭包只实例化一次
我尝试了几种方法使订阅dynamicList
动态,但它似乎从未更新
任何帮助都将不胜感激所有动态发布者都完成了吗?否则,varC
的.collect
将等待上游MergeMany
的完成,而上游MergeMany
又将等待从动态list@NewDev啊,这是有道理的,没有一个是完整的。我完全误读了收集的用例。你知道我可以在collect的位置上使用什么来对所有动态发布者列表进行本质上的CombineTest吗?我不知道是否有一种简单的方法可以为一系列发布者实现类似CombineTest的功能。