метаданные? .downloadURL () ?. absoluteString - PullRequest
0 голосов
/ 25 мая 2018

У меня есть проблема со старым синтаксисом, например:

metadata?.downloadURL()?.absoluteString"

Как использовать новый способ в моем коде?Ошибка в этом коде детали:

let downloadURL = metadata?.storageReference?.downloadURLWithCompletion()

Полный код:

Storage.storage().reference().child(imgUid).putData(imgData, metadata: metadata) { (metadata, error) in
    if error != nil {
        print("Did'n upload image")
    } else {
        print("uploaded")
        let downloadURL = metadata?.storageReference?.downloadURLWithCompletion()

        if let url = downloadURL {
            self.setUser(img: url)
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018
func save() {
    let newPostRef = Database.database().reference().child("users").childByAutoId()
    let newPostKey = newPostRef.key

    // 1. save image
    if let imageData = self.profilPic!.jpegData(compressionQuality:0.5) {
        let storage = Storage.storage().reference().child("profileImages")
         DispatchQueue.main.sync {
        storage.putData(imageData).observe(.success, handler: { (snapshot) in
            storage.downloadURL(completion: { (url, error) in
                if error != nil {
                    print(error!.localizedDescription)
                    return
                }
                if let profileImageUrl = url?.absoluteString {
                    guard let uid = (Auth.auth().currentUser?.uid) else {return}
                    let values = ["name": self.name, "email": self.email, "profilePictureUrl": profileImageUrl]

                    newPostRef.setValue(values)
                    self.ref.child(uid).childByAutoId().setValue(values)

                    }
            })
            })

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

Это простой способ сделать это, используя эту функцию, чтобы сохранить данные в FirebaseStorage, затем взять URL-адрес в виде строки, затем вы можете сохранить его на

func uploadImageToFirebaseStorage(data: Data, onSuccess: @escaping (_ imageUrl: String) -> Void) {
    let photoIdString = NSUUID().uuidString
    let storageRef = Storage.storage().reference(forURL: Config.STORAGE_REF_URL).child(POST_REF).child(photoIdString)


    storageRef.putData(data, metadata: nil) { (metadata, error) in
        if let error = error {
            debugPrint(error.localizedDescription)
            return
        }

        metadata?.storageReference?.downloadURL(completion: { (url, error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }
            onSuccess("\(url!)")
        })
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...