Ios Swift Firebase存储-更新数据时,图像从应用程序中消失
我在更新数据方面遇到了问题。如下图所示,当我更改这三个文本字段但保留当前图像并点击“保存”时,它将更新Firebase中的数据,但也将上载一个空的新图像,因此用户将看到一个空的UIImageView 为什么呢 这是我从Firebase保存图像(数据)和下载URL的方法:Ios Swift Firebase存储-更新数据时,图像从应用程序中消失,ios,swift,firebase,firebase-storage,Ios,Swift,Firebase,Firebase Storage,我在更新数据方面遇到了问题。如下图所示,当我更改这三个文本字段但保留当前图像并点击“保存”时,它将更新Firebase中的数据,但也将上载一个空的新图像,因此用户将看到一个空的UIImageView 为什么呢 这是我从Firebase保存图像(数据)和下载URL的方法: func saveImageToStorage(cellImage: Data, completion: @escaping(Result<String, Error>) -> Void) { gu
func saveImageToStorage(cellImage: Data, completion: @escaping(Result<String, Error>) -> Void) {
guard let uid = Auth.auth().currentUser?.uid else { return }
refStorage.child(uid).child(imageName).putData(cellImage, metadata: nil) { (_, error) in
guard error == nil else {
completion(.failure(NSError(domain: "Saving image to storage failed", code: 0)))
return
}
self.refStorage.child(uid).child(self.imageName).downloadURL { (url, error) in
guard let url = url, error == nil else { return }
let urlString = url.absoluteString
completion(.success(urlString))
print("URL downloaded: \(urlString)")
}
}
}
更新药物治疗方法所在的ViewModel:
func updateMedicationInfo(data: Data, pillName: String, capacity: String, dose: String, childId: String, completion: @escaping () -> Void) {
firebaseManager.saveImageToStorage(cellImage: data) { (result) in
switch result {
case .failure(let error):
print(error.localizedDescription)
case .success(let url):
self.firebaseManager.updateMedicationInfo(pillName: pillName, capacity: capacity, dose: dose, cellImageURL: url, childId: childId)
}
completion()
}
}
谢谢你的建议
干杯
func updateMedicationInfo(data: Data, pillName: String, capacity: String, dose: String, childId: String, completion: @escaping () -> Void) {
firebaseManager.saveImageToStorage(cellImage: data) { (result) in
switch result {
case .failure(let error):
print(error.localizedDescription)
case .success(let url):
self.firebaseManager.updateMedicationInfo(pillName: pillName, capacity: capacity, dose: dose, cellImageURL: url, childId: childId)
}
completion()
}
}