Сбой приложения при попытке изменить фотографию профиля - PullRequest
0 голосов
/ 27 июня 2019

Я работаю в разделе редактирования профиля моего приложения. Когда я пытаюсь изменить и обновить фотографию профиля пользователя. Приложение вылетает, и я получаю эту ошибку

reason: 'URL scheme must be one of gs://, http://, or https://

Когда я создаю новый профиль и добавляю фотографию профиля или загружаю фотографию, она работает нормально, но когда я пытаюсь изменить фотографию профиля, я получаю это. Сначала он удалит фотографию профиля и обновит ее (оставив изображение серым, если у пользователя нет фотографии), а затем, когда я попытаюсь изменить фотографию снова, произойдет сбой.

Вот код, который у меня есть.

func updateProfileImage() {
        guard imageChanged == true else { return }
        guard let currentUid = Auth.auth().currentUser?.uid else { return }
        guard let user = self.user else { return }

        Storage.storage().reference(forURL: user.profileImageUrl).delete(completion: nil)

        let filename = NSUUID().uuidString

        guard let updatedProfileImage = profileImageView.image else { return }

        guard let imageData = updatedProfileImage.jpegData(compressionQuality: 0.3) else { return }

        STORAGE_PROFILE_IMAGES_REF.child(filename).putData(imageData, metadata: nil) { (metadata, error) in

            if let error = error {
                print("Failed to upload image to storage with error: ", error.localizedDescription)
            }

            STORAGE_PROFILE_IMAGES_REF.downloadURL(completion: { (url, error) in
                USER_REF.child(currentUid).child("profileImageUrl").setValue(url?.absoluteString, withCompletionBlock: { (err, ref) in

                    guard let userProfileController = self.userProfileController else { return }
                    userProfileController.fetchCurrentUserData()

                    self.dismiss(animated: true, completion: nil)
                })
            })
        }
    }
}



1 Ответ

0 голосов
/ 27 июня 2019

Первое, что вы проверяете, что URL действителен или не используете guard .

  guard let urlis = yourUrl else{
  // url is nill.
      return
      }
if let url = NSURL(string: urlis) {
  // your image code  
  }
else{
  // url is invalid.
  return
  }

Добавить точку останова исключения : это быстроСовет сэкономит вам много времени на отладку!Таким образом, Xcode остановится там, где поймано исключение.

В вашем проекте перейдите к Навигатору точек останова enter image description here, нажмите кнопку «+» и «Добавить точку останова исключения…»

...