使用 Alamofire 的下载速率
Posted
技术标签:
【中文标题】使用 Alamofire 的下载速率【英文标题】:download rate using Alamofire 【发布时间】:2018-08-15 12:13:12 【问题描述】:我正在使用此功能编写带有 alamofire 模块的下载器应用程序我想以 MB/s 为单位显示当前下载速率,但我真的不知道如何实现这一点,请帮助我。
@IBAction func tapStartButton(_ sender: Any)
let fileUrl = self.getSaveFileUrl(fileName: Data[0] as String)
let destination: DownloadRequest.DownloadFileDestination = _, _ in
return (fileUrl, [.removePreviousFile, .createIntermediateDirectories])
self.request = Alamofire.download(Data[0] as String , to:destination)
.downloadProgress (progress) in
self.progressCircle.progress = progress.fractionCompleted
cell.progressLabel.isHidden = false
.responseData (data) in
self.Data.removeFirst()
self.startButton.isHidden = false
self.pauseButton.isHidden = true
【问题讨论】:
【参考方案1】:我不认为 Alamofire 或任何其他库提供下载速度。开发人员必须自己计算。 你可以这样做:
获取一个保存之前下载字节的全局变量。 使用NSTimer
以 1 秒为间隔计算速度。
代码示例:
var prevDownloadedBytes: Int = 0
var totalDownloadedBytes: Int = 0
func calculateDownloadSpeed()
Timer.scheduleWith(timeInterval: 1.0, repeats: true)
speed = totalDownloadedBytes - prevDownloadedBytes
print("Speed is: \(speed) bps")
prevDownloadedBytes = totalDownloadedBytes
@IBAction func tapStartButton(_ sender: Any)
self.request = Alamofire.download(Data[0] as String , to:destination)
.downloadProgress (progress) in
//Set Total Downloaded bytes here
self.totalDownloadedBytes = progress.fileCompletedCount
self.progressCircle.progress = progress.fractionCompleted
cell.progressLabel.isHidden = false
.responseData (data) in
self.Data.removeFirst()
self.startButton.isHidden = false
self.pauseButton.isHidden = true
【讨论】:
谢谢它对我来说工作得很好我有另一个关于 Progress 类的问题,它有一个名为estimatedtimeremaining 的int 类型的属性?我如何使用它,因为它似乎每次都为零 谢谢它的工作。另一个问题我如何在 Progress 类中使用估计的剩余时间,类型是 int?当我称之为它时,它总是为零 您可以在 Apple 的官方页面查看所有详细信息。 link calculateDownloadSpeed 函数确实存在严重问题,我该如何阻止它?我已经尝试了 if 语句带有 bool 属性,但它当然不起作用,因为第一次它是真的并且它继续运行我该怎么办? @mahadshahib 将您的计时器对象存储在变量中,例如。var timer: Timer!
timer = Timer.scheduleWith(timeInterval: 1.0, repeats: true)....
当你需要停止计时器时,请致电timer.invalidate()
。以上是关于使用 Alamofire 的下载速率的主要内容,如果未能解决你的问题,请参考以下文章