【发布时间】:2021-07-10 19:17:56
【问题描述】:
我正在尝试合并多个不同类型的发布者。
我有一个字符串类型的发布者和一个类型的发布者,但是当我使用MergeMany 或CombineLatest 合并它们时,我得到一个类型不匹配的错误。
是否可以合并不同类型的发布者?请看下面的代码示例:
@Published var str1: String?
@Published var str2: String?
@Published var image: Image?
Publishers.MergeMany($str1, $str2, $image)
.removeDuplicates()
.sink { _ in
//...
}
.store(in: &bag)
【问题讨论】:
-
我认为一个重要的因素是你期望在
sink中得到什么——_是否暗示你实际上不需要在那里获取参数并且你只是更关心其中一个已更新的事实? -
是的,我只关心其中一个发生了变化。我忘记包含在我的代码示例中的一件事是,如果可能,我想删除任何重复项,但如果有另一种实现方式,则不需要。
-
那里有问题,你为什么要发布
Image?那是一个 SwiftUI 视图,你不太可能从中得到有用的东西。还是您尝试发布UIImage?