Метод putData хранилища Firebase никогда не выполняет блок завершения - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь загрузить изображение в хранилище Firebase, а затем сохранить профиль пользователя в базе данных.

Но, похоже, метод storageRef.putData не выполняется -> «закрытие данных при вводе» никогда не печатается.(«uploadProfileImage звонил» печатается.)

Это функция, которая вызывается в Auth.auth (). createUser закрытие.

func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
    print("uploadProfileImage called")
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let storageRef = Storage.storage().reference().child("user/\(uid)")

    guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }

    let metaData = StorageMetadata()
    metaData.contentType = "image/jpg"

    storageRef.putData(imageData, metadata: metaData) { metaData, error in
        print("In put data closure")
        if error == nil, metaData != nil {
            storageRef.downloadURL(completion: { (url, error) in
                if let error = error {
                    print("url error")
                } else {
                    completion(url?.absoluteURL)
                }
            })
        }
    }
}

Но я могу видеть изображение в хранилище Firebase,так что было загружено.И для сохранения профиля мне нужен URL этого изображения.

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Просто исправьте 'FirebaseInstanceID' до версии '2.0.0' в подфайле, метод putData будет выполнен.В подфайле это выглядит так: pod 'FirebaseInstanceID', '2.0.0'

Я использую Xcode 10.2 и Swift 5, трюк все еще работает

0 голосов
/ 13 февраля 2019

// Проверьте это, надеюсь, это полезно для вас!

func firebaseimage(){
            let uid = Auth.auth().currentUser?.uid
            let storageRef = Storage.storage().reference().child("image").child(useruid)
                storageRef.putData(imagedata, metadata: nil, completion: { (metadatas, error) in
                    if error != nil {
                        self.visualView.isHidden = true
                                        print("Couldn't Upload Image")
                                    } else {
                                        print("Uploaded")
                                      print(metadatas!)
                                        storageRef.downloadURL(completion: { (url, error) in
                                            if error != nil {
                                                print(error!)
                                                return

                                            }
                                            if url != nil {

                                                let imageurl = String(describing: url!)
                                            }
                                        })
                            }
                })
        }
...