0

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

let currentUploadTask:StorageUploadTask = uploadPath.putData(data, metadata: nil) { (storageMetaData, error) in
                if error != nil{
                    //TODO: Error handling
                }else{
                    print("Upload Finished")
                }
            }

您可以通过 NSProgress 对象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

提前致谢 :)

4

1 回答 1

0

我了解您要做什么——我也想这样做:您想使用NSProgress对象本身并简单地将其添加为顶级对象的子NSProgress对象。

不幸的是,我可以从FirebaseStorage代码中看到这是不可能的:

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

NSProgress...因为每次都会创建一个新对象,而不是重新使用现有对象。我将在 github 上提交一个关于它的功能改进。

于 2020-07-04T15:09:12.593 回答