Swift Firebase上传图像|利用NSProgress

Swift Firebase上传图像|利用NSProgress,swift,firebase,firebase-storage,nsprogress,Swift,Firebase,Firebase Storage,Nsprogress,我必须上传3张图片到Firebase。我想通过监控这三张图片的上传进度 您可以通过currentUploadTask.snapshot.progress 事实上,如果运行currentUploadTask.snapshot.progress.fractionCompleted 一旦我将所有的“Firebase进展”合并为一个大的进展,事情就会分崩离析 let progress:Progress = Progress(totalUnitCount: 3) progress.addChild(cur

我必须上传3张图片到Firebase。我想通过监控这三张图片的上传进度

您可以通过
currentUploadTask.snapshot.progress
事实上,如果运行
currentUploadTask.snapshot.progress.fractionCompleted

一旦我将所有的“Firebase进展”合并为一个大的进展,事情就会分崩离析

let progress:Progress = Progress(totalUnitCount: 3)
progress.addChild(currentUploadTask.snapshot.progress!, withPendingUnitCount: currentUploadTask.snapshot.progress!.totalUnitCount)

// Observe progress.fractionCompleted ----> always 0.0

提前感谢:)

我明白您想做什么——我也想这么做:您想使用
NSProgress
对象本身,只需将其作为顶级
NSProgress
对象的子对象添加即可

不幸的是,我可以从
FirebaseStorage
code中看出这是不可能的:

- (FIRStorageTaskSnapshot *)snapshot {
  @synchronized(self) {
    NSProgress *progress = [NSProgress progressWithTotalUnitCount:self.progress.totalUnitCount];

。。。因为每次都会生成一个新的
NSProgress
对象,而不是重复使用现有对象。我将在github上提交一份功能改进报告。

您在这里做的事情有点不清楚。需要在uploadTask中添加一个观察者来监视它。从传入的快照中,可以获得该任务的完成百分比(和其他数据)<代码>让完成=100.0*Double(snapshot.progress!.completedUnitCount)/Double(snapshot.progress!.totalUnitCount)。如果要将所有上载合并为一个,则需要将三个总单位计数与已完成的计数合并在一起,然后除以。看见
- (FIRStorageTaskSnapshot *)snapshot {
  @synchronized(self) {
    NSProgress *progress = [NSProgress progressWithTotalUnitCount:self.progress.totalUnitCount];