FirebaseStorage не может создать downloadURL для метаданных - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь использовать облачное хранилище 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)
    }
}

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Вы также можете откатить версию Firebase, пока версия 5 не станет более поддерживаемой. Хотя это временное исправление.

Добавьте это в свой подфайл:

pod 'Firebase/Storage', '~> 4.0'
0 голосов
/ 09 мая 2018

Произошло критическое изменение в 5.0 Firebase iOS SDK, которое удалило свойство downloadURL в StorageMetadata. Используйте StorageReference.downloadURL(completion:) для получения текущего URL для загрузки.

reference.downloadURL { url, error in
  if let error = error {
    // Handle any errors
  } else {
    // Get the download URL
  }
}
...