Загрузите профиль Pi c. Невозможно назначить фотографию, выбранную из библиотеки, на profilepi c в узле пользователей - PullRequest
0 голосов
/ 06 мая 2020
     func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {

           let storageRef = Storage.storage().reference().child("profileImages").child("\(NSUUID().uuidString).jpg")


          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
           if error != nil, metaData != nil {
               storageRef.downloadURL (completion: {(url, error) in
                   if error != nil {
                   if let downloadurl = url?.absoluteString {
                   if (self.profilePicLink == "") {
                   self.profilePicLink = downloadurl
                      Database.database().reference().child("users").child(self.uid).updateChildValues(["profilePicLink":downloadurl])
                   }
               }

           }   else {
               completion(nil)
               }
           }
               )
       }

           }

     }

Я пытаюсь назначить загружаемую фотографию из моей библиотеки, а затем назначить ее для profilePicLink. Однако, когда я выбираю pi c из моей библиотеки, он появляется во фрейме UIImage ImageView. Когда я использую эти забавные c и действия для обновления аватара, происходит ошибка

 @IBAction func updateAvatar(_ sender: Any) {
        uploadPhoto()
    }

    func uploadPhoto(){
        selectedUser?.uploadProfileImage(imageView.image!){
            url in print (URL.self)
        }

    }

После того, как я захожу в Firestore, pi c не сохраняется, и мой profilePicLink не имеет значения. Обратите внимание на это

1 Ответ

0 голосов
/ 06 мая 2020

Вы проверяете error != nil, metadata != nil вместе. Они противоречат друг другу, поэтому это условие никогда не выполняется. Измените его на:

if error == nil, metadata != nil {
    ...
}
...