Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Swift 3的Firebase多文件上载问题_Swift_Firebase_Firebase Storage - Fatal编程技术网

使用Swift 3的Firebase多文件上载问题

使用Swift 3的Firebase多文件上载问题,swift,firebase,firebase-storage,Swift,Firebase,Firebase Storage,因此,我对swift和firebase还比较陌生,但我逐渐意识到,使用firebase同步数据给我带来了一个特殊的问题。我有一个非常简单的应用程序,基本上允许用户将多个图像上传到firebase存储 在我的代码中现在发生的是,一旦上传的第一个图像完成,视图就会转到下一个视图控制器。我想做的是,只有当所有的图片都上传时,而不是只上传一张图片时,它才会继续 我试图做的是创建一个浮动列表,对于用户打算上传的每个图像,我只会跟踪最后上传的图像。然而,我必须相信还有另一种方法可以做到这一点。此外,我的解决

因此,我对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没有一个好的本机承诺类型,所以它有点难。