Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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中Firebase存储引用后的功能执行问题_Swift_Firebase_Firebase Storage - Fatal编程技术网

Swift中Firebase存储引用后的功能执行问题

Swift中Firebase存储引用后的功能执行问题,swift,firebase,firebase-storage,Swift,Firebase,Firebase Storage,我正在使用以下代码更新Firebase中的配置文件pic: func saveProfileImage(_ userUID: String, _ completion: @escaping (Error?) -> Void) { let resizedImage = image.resized() let imageData = UIImageJPEGRepresentation(resizedImage, 1.0) ref = StorageRefere

我正在使用以下代码更新Firebase中的配置文件pic:

    func saveProfileImage(_ userUID: String, _ completion: @escaping (Error?) -> Void) {
    let resizedImage = image.resized()
    let imageData = UIImageJPEGRepresentation(resizedImage, 1.0)

    ref = StorageReference.profileImages.reference().child(userUID)
    downloadLink = ref.description

    ref.put(imageData!, metadata: nil) {
        (metaData, error) in
        completion(error)
    }
    updateProfilePic(userUID)
}
updateProfilePic是一个用来触发一个孩子的函数,用户可以下载新的个人资料。它一直不起作用,我认为这是因为它是在StorageReference完成更新之前被调用的。有没有办法确保函数仅在引用完成后调用?

要确保updateProfilePic在上载完成后调用,请将其移动到回调/完成处理程序中:

func saveProfileImage(_ userUID: String, _ completion: @escaping (Error?) -> Void) {
    let resizedImage = image.resized()
    let imageData = UIImageJPEGRepresentation(resizedImage, 1.0)

    ref = StorageReference.profileImages.reference().child(userUID)
    downloadLink = ref.description

    ref.put(imageData!, metadata: nil) {
        (metaData, error) in
        completion(error)
        updateProfilePic(userUID)
    }
}

对于仅当完成块运行时才需要调用的代码,应将所述代码放入完成块中,因此更改:

ref.put(imageData!, metadata: nil) {
        (metaData, error) in
        completion(error)
    }
    updateProfilePic(userUID)


如果必须始终在完成块成功后调用updateProfilePic

,那么问题似乎已经得到了回答,希望它能够解决更广泛的问题,并且能够快速回答!hahait现在可以工作了,谢谢。这是一个奇怪的问题,我追溯到这个原因
    ref.put(imageData!, metadata: nil) {
        (metaData, error) in

        guard error == nil else {
           print("Error from adding to FIRDatabase: \(error)")
           return
        }

        self.updateProfilePic(userUID)
    }