Swift中Firebase存储引用后的功能执行问题
我正在使用以下代码更新Firebase中的配置文件pic: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
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)
}