Я пытаюсь использовать облачное хранилище Firebase и базу данных в реальном времени.В первом я загружаю изображение, а затем пытаюсь сохранить downloadUrl во втором.Все работало до обновления Firebase pod до 5.0.0 для использования MLKit.В StorageService я загружаю изображение (которое работает, я вижу его на консоли Firebase), а затем создаю словарь со всеми моими потребностями, в PostService
struct StorageService {
static func uploadImage(_ image: UIImage, at reference: StorageReference, completion: @escaping (URL?) -> Void) {
guard let imageData = UIImageJPEGRepresentation(image, 0.5) else {
return completion(nil)
}
reference.putData(imageData, metadata: nil, completion: { (metadata, error) in
if let error = error {
assertionFailure(error.localizedDescription)
return completion(nil)
}
completion(metadata?.downloadURL())
})
}
}
struct PostService {
static func create(for image: UIImage) {
let imageRef = StorageReference.newPostImageReference()
StorageService.uploadImage(image, at: imageRef) { (downloadURL) in
guard let downloadURL = downloadURL else {
return
}
print("bum")
let urlString = downloadURL.absoluteString
let aspectHeight = image.aspectHeight
create(forURLString: urlString, aspectHeight: aspectHeight)
}
}
private static func create(forURLString urlString: String, aspectHeight: CGFloat) {
//save the text
let currentUser = User.current
let post = Post(imageURL: urlString, imageHeight: aspectHeight)
let dict = post.dictValue
let postRef = Database.database().reference().child("posts").child(currentUser.uid).childByAutoId()
postRef.updateChildValues(dict)
}
}