gpt4 book ai didi

swift - 如何检查URLSession.dataTaskPublisher的当前进度?

转载 作者:行者123 更新时间:2023-12-03 09:20:08 24 4
gpt4 key购买 nike

我正在使用dataTaskPublisher来获取一些数据:

func downloadData(_ req: URLRequest) {
self.cancelToken = dataTaskPublisher(for: req).sink { /* ... */ }
}

如果在请求进行过程中调用了该函数,我想返回。

目前我要么:
1.在接收器中将 cancelToken设置为nil或
2.创建并管理 isDownloading变量。

是否有内置的方法来检查 dataTaskPublisher是否正在运行(以及可选的进度)?

最佳答案

我大多同意@Rob,但是您可以使用DataTask方法控制DataTaskPublisher初始化的URLSession的状态及其进度:

func downloadData(_ req: URLRequest) {
URLSession.shared.getAllTasks { (tasks) in
let task = tasks.first(where: { (task) -> Bool in
return task.originalRequest?.url == req.url
})

switch task {
case .some(let task) where task.state == .running:
print("progress:", Double(task.countOfBytesReceived) / Double(task.countOfBytesExpectedToReceive))
return
default:
self.cancelToken = URLSession.shared.dataTaskPublisher(for: req).sink { /* ... */ }
}
}
}

关于swift - 如何检查URLSession.dataTaskPublisher的当前进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61102801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com