最近,我正在尝试迁移到Swift 3,这意味着我还需要使用Alamofire 4.
在Alamofire 3中,进程处理程序提供对bytesRead,totalBytesRead,totalBytesExpectedToRead的访问,但是在Alamofire 4中,似乎处理程序只有一个参数“progress”,这只允许我看到“fractionCompleted”。但是对于UILabel的文本,我需要bytesRead和totalBytesRead。我想我有可能获得这两个值吗?非常感谢!
修饰:
刚看了一下Progress类,发现有completedUnitCount
,totalUnitCount
,它们似乎是totalBytesRead和bytesRead的替代品。不确定我是否走在正确的轨道上?
答案 0 :(得分:3)
确切地说,totalUnitCount
和completedUnitCount
与totalBytesExpectedToRead
与totalBytesRead
具有相同的含义。
bytesRead
是一个增量(在每次迭代中)到totalBytesRead值的值。
现在添加的fractionCompleted
已经是Double
类型的比率,因此在用作进度条的值时非常有用。
我已经测试了几个Progress
值,因此这是代码(在文件中测试的大小约为600 kB):
.downloadProgress { progress in
print("fractionCompleted: \(progress.fractionCompleted)")
print("completedUnit: \(progress.completedUnitCount)")
print("totalUnitCount: \(progress.totalUnitCount)")
}
...输出以下(我从调试控制台中选择了前3次迭代):
fractionCompleted: 0.104675046718523 completedUnit: 65536 totalUnitCount: 626090 fractionCompleted: 0.209350093437046 completedUnit: 131072 totalUnitCount: 626090 fractionCompleted: 0.314025140155569 completedUnit: 196608 totalUnitCount: 626090 ...
答案 1 :(得分:0)
是的,如果您正在执行单个下载/上传任务(没有子任务),则可以依赖completedUnitCount
和totalUnitCount
来自Alamofire 4 doc:
如果接收方NSProgress对象是"叶子进度" (没有小孩), 那么fractionCompleted通常是completedUnitCount / totalUnitCount。如果接收者NSProgress有孩子,那么 fractionCompleted将反映在子对象中所取得的进展 除了自己的completedUnitCount。当孩子们完成时, 将更新父级的completedUnitCount。