如何取消 Set<AnyCancellable> 中的某个 AnyCancellable?

How do I cancel one certain AnyCancellable in a Set<AnyCancellable>?

我有一个 URLSession.shared.dataTaskPublisher,我将其存储在一组 AnyCancellable-s 中。当我收到一个值并完成后,我希望将此 AnyCancellable 从 Set 中删除。

如何识别这个特定的 AnyCancellable 以及如何删除它?或者处理这些情况的最佳方法是什么?我检查了一下,它不会在我收到完成值后自动从包中移除。

class RandomClass {
    private var cancellableBag: Set<AnyCancellable>()

    func someMethod() {
        let request = URLRequest(...)
        URLSession.shared.dataTaskPublisher(for: request)
            .sink(...)
            .store(in: &self.cancellableBag)
    }
}

这是可能的方法。使用 Xcode 11.4

测试
class RandomClass {
    private var cancellableBag = Set<AnyCancellable>()

    func someMethod() {
        let request = URLRequest(...)

        var cancellable: AnyCancellable? = nil
        cancellable = URLSession.shared.dataTaskPublisher(for: request)
            // .. other operators here
            .sink(receiveValue: {[weak self] value in
                // ... process value here
                self?.cancellableBag.remove(cancellable!)  // << remove !!
            })
        self.cancellableBag.insert(cancellable!)     // << store !!
    }