我有一个URLSession.shared.dataTaskPublisher
,我将其存储在AnyCancellable
-s中。当我收到一个值并完成后,我希望将此AnyCancellable从集合中删除。
如何识别此特定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 !!
}
关于ios - 如何取消Set <AnyCancellable>中的某个特定AnyCancellable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61540292/