Swift Combine:没有“distinct”运算符?

Posted

技术标签:

【中文标题】Swift Combine:没有“distinct”运算符?【英文标题】:Swift Combine: no `distinct` operator? 【发布时间】:2019-09-02 17:22:56 【问题描述】:

似乎Combine(Xcode 11 beta 7 附带)缺少distinct 运算符?

谁能帮我建一个? :)

【问题讨论】:

【参考方案1】:

我真傻,有一个,叫RemoveDuplicates和link to method removeDuplicates()

【讨论】:

【参考方案2】:

.removeDuplicates() 等价于 .distinctUntilChanged()

您可以执行以下操作来获取 .distinct()

@available(OSX 10.15, ios 13.0, tvOS 13.0, watchOS 6.0, *)
extension Publisher where Self.Output : Equatable 
    public func distinct() -> AnyPublisher<Self.Output, Self.Failure> 
        self.scan(([], nil)) 
            $0.0.contains($1) ? ($0.0, nil) : ($0.0 + [$1], $1)
        
        .compactMap  $0.1 
        .eraseToAnyPublisher()
    

【讨论】:

以上是关于Swift Combine:没有“distinct”运算符?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - JSONDecoder & Combine 框架问题

如何使用 Combine + Swift 复制 PromiseKit 风格的链式异步流

使用 Swift 和 Combine 链接 + 压缩多个网络请求

Xcode 11 中 Swift Combine.framework 的可选链接

Swift/Combine - 将过滤后的对象分配给类的属性

Swift Combine - @Published 属性数组