Swiftui 对出版商进行异议的最佳方式是什么';谁的产量?

Swiftui 对出版商进行异议的最佳方式是什么';谁的产量?,swiftui,combine,Swiftui,Combine,我与一些出版商有一个可观察对象: 私有类ViewModel:ObserveObject{ @已发布变量top3:[搜索结果]=[] @已发布的var相册:[SearchResult.Album]=[] @已发布的var艺术家:[SearchResult.Artist]=[] } 端点是一个URLSessionDataPublisher,它发送一组值,这些值可以是相册或艺术家(实际上有更多类型,但我正在减少这里设置的问题)。组合将此集合分为3个集合的最佳方式是什么:[album],[Artist

我与一些出版商有一个
可观察对象

私有类ViewModel:ObserveObject{
@已发布变量top3:[搜索结果]=[]
@已发布的var相册:[SearchResult.Album]=[]
@已发布的var艺术家:[SearchResult.Artist]=[]
}
端点是一个URLSessionDataPublisher,它发送一组值,这些值可以是相册或艺术家(实际上有更多类型,但我正在减少这里设置的问题)。组合将此集合分为3个集合的最佳方式是什么:
[album]
[Artister]
,以及一个包含3个结果的数组,可以是
艺术家
专辑

DatabaseRequest.Search(for:searchTerm)
.publisher()
//现在,我想将收藏分成[Album]和[Artist],并分配给我的3@Published Var
.receive(在:DispatchQueue.main上)
.sink{}
.储存(在:袋中)

您遇到了一个(常见的)谬误,Combine负责在SwiftUI中传递更改的数据。事实并非如此。Combine在这里所做的唯一一件事就是提供一些数据已经更改的无内容消息,然后使用相关模型对象的SwiftUI组件去寻找它们的数据

SwiftUI中的数据传输完全使用绑定,本质上是
get
set
封套下的闭包

因此,您实际上不需要担心对合并流进行解组,而且没有一个合并流中包含这类数据中的“一”。Combine在这方面会遇到麻烦,因为它对于输出类型和故障类型都是强类型的

在这一章下面有更多关于这方面的内容
(链接到免费HTML版本的章节)

最后,这意味着在订阅服务器中,在您的案例中是在接收器中