使用Swift 3的Firebase多文件上载问题
因此,我对swift和firebase还比较陌生,但我逐渐意识到,使用firebase同步数据给我带来了一个特殊的问题。我有一个非常简单的应用程序,基本上允许用户将多个图像上传到firebase存储 在我的代码中现在发生的是,一旦上传的第一个图像完成,视图就会转到下一个视图控制器。我想做的是,只有当所有的图片都上传时,而不是只上传一张图片时,它才会继续 我试图做的是创建一个浮动列表,对于用户打算上传的每个图像,我只会跟踪最后上传的图像。然而,我必须相信还有另一种方法可以做到这一点。此外,我的解决方案似乎无法正常工作使用Swift 3的Firebase多文件上载问题,swift,firebase,firebase-storage,Swift,Firebase,Firebase Storage,因此,我对swift和firebase还比较陌生,但我逐渐意识到,使用firebase同步数据给我带来了一个特殊的问题。我有一个非常简单的应用程序,基本上允许用户将多个图像上传到firebase存储 在我的代码中现在发生的是,一旦上传的第一个图像完成,视图就会转到下一个视图控制器。我想做的是,只有当所有的图片都上传时,而不是只上传一张图片时,它才会继续 我试图做的是创建一个浮动列表,对于用户打算上传的每个图像,我只会跟踪最后上传的图像。然而,我必须相信还有另一种方法可以做到这一点。此外,我的解决
func observeUploadProgress(for job: Job) {
let imageName = UUID().uuidString
let storageRef = FIRStorage.storage().reference().child("\(imageName).png")
let uploadData = UIImagePNGRepresentation(job.beforeImage!)
let uploadTask = storageRef.put(uploadData!, metadata: nil, completion: { (metadata, error) in
if error != nil {
print(error)
return
}
job.beforeImageUrl = (metadata?.downloadURL()?.absoluteString)!
self.uploadingImagesToFirebase = false
if (self.arrayProgressList[self.arrayProgressList.count - 1] >= 1.0) {
self.alertController?.dismiss(animated: true, completion: nil)
self.performSegue(withIdentifier: "unwindFromCustomerDetailsSegue", sender: self)
}
})
self.arrayProgressList.append(0.0)
let curr_index = self.arrayProgressList.count - 1
uploadTask.observe(.progress) { (snapshot) in
guard let progress = snapshot.progress else { return }
self.uploadingImagesToFirebase = true
self.arrayProgressList[curr_index] = Float(progress.fractionCompleted)
self.progressView?.progress = self.arrayProgressList[self.arrayProgressList.count - 1]
}
}
你真正想要的是这个(),但是Swift没有一个好的本机承诺类型,所以它有点难。你真正想要的是这个(),但是Swift没有一个好的本机承诺类型,所以它有点难。