Невозможно сохранить URLString в моей базе данных Firebase Realtime - PullRequest
0 голосов
/ 11 июля 2019

Я установил переменную URLstring в моем ViewController, но когда я пытаюсь установить значение для «profileImageURL» в базе данных реального времени, он не показывает необходимый URL-адрес, даже когда я извлекаю его из storageRef, он печатается хорошо.

Я думал, что это потому, что я объявил переменную URLString внутри метода (в данном случае это кнопка), но даже сейчас, когда я объявил это в ViewController, он не работает.

это код:

Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in

        if error != nil{
            print(error!.localizedDescription)
            return
        }

        let uid = Auth.auth().currentUser?.uid
        let storageRef = Storage.storage().reference(forURL: "gs://instagramclone-1ed36.appspot.com").child("Profile_Images").child(uid!)
        let ref = Database.database().reference()

        if let profileIMG = self.selectedImage, let imageData = profileIMG.jpegData(compressionQuality: 0.1){
            storageRef.putData(imageData, metadata: nil, completion: { (metadata, error) in
                if error != nil {
                    return
                }


                storageRef.downloadURL(completion: { (url, error) in
                    if error != nil {
                        return
                    }else {
                        self.URLString = url!.absoluteString
                        print("\n\n the URLString is : \(self.URLString)\n\n")
                    }

                })

                let userReference = ref.child("users")
                let newUserReference = userReference.child(uid!)
                newUserReference.setValue([ "profileImageURL": self.URLString])

            })
        }
    }

1 Ответ

2 голосов
/ 11 июля 2019
// Fetch the download URL
            storageRef.downloadURL { url, error in
                if let error = error {
                    // Handle any errors
                    if(error != nil){
                        print(error)
                        return
                    }
                } else {
                    // Get the download URL for 'images/stars.jpg'
                    let urlStr:String = (url?.absoluteString) ?? ""
                    let values = ["imageUrl": urlStr,"date_time": self.getDate()]
                    self.registerUserIntoDatabaseWithUID(uid: userID, values: values as [String : AnyObject])
                }
            }


func registerUserIntoDatabaseWithUID(uid:String, values:[String:AnyObject]){
    let ref = Database.database().reference(fromURL: "https://yourpath.firebaseio.com/")
    let usersReference = ref.child("abc").child(uid).child("\(self.yourID!)")

    usersReference.updateChildValues(values) { (error, ref) in
        if(error != nil){
            print(error)
            return
        }
        self.dismiss(animated: true, completion: nil)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...