Установите PNG-изображение из Firestore в UIImage.image --- Swift - PullRequest
2 голосов
/ 04 мая 2020

Я пытаюсь установить это изображение UIImageView (profileImage) для моего загруженного из Firestore. Я не получаю никакой ошибки, и он работает нормально, но profileImage содержит цвет фона представления, а не загруженное изображение из Firestore.

просмотреть изображение результата здесь

storage = Storage.storage().reference(forURL: "gs://senlink-6d966.appspot.com")
profilePath = storage.child("users_profile/\(Auth.auth().currentUser!.uid).png")
profilePath?.downloadURL(completion: { (url, error) in
            if error != nil {
                print("\(error!)")
            } else {
                if let url = url {
                    DispatchQueue.main.async {
                        let data = UIImage(data: url.absoluteURL.dataRepresentation)
                        self.profileImg.image = data
                    }
                }
            }
        }) 

1 Ответ

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

Метод downloadURL возвращает URL-адрес данных изображения, а не фактические данные изображения. Для прямой загрузки данных изображения вы можете использовать getData. Вот пример из документов :

// Create a reference to the file you want to download
let islandRef = storageRef.child("images/island.jpg")

// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
islandRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
  if let error = error {
    // Uh-oh, an error occurred!
  } else {
    // Data for "images/island.jpg" is returned
    let image = UIImage(data: data!)
  }
}

Это должно делать то, что вы хотите:

storage = Storage.storage().reference(forURL: "gs://senlink-6d966.appspot.com")
profilePath = storage.child("users_profile/\(Auth.auth().currentUser!.uid).png")
profilePath?.getData(maxSize: 1 * 1024 * 1024) { data, error in
  if let error = error {
    // Uh-oh, an error occurred!
  } else {
    // Data for your image
    let image = UIImage(data: data!)
    DispatchQueue.main.async {
        self.profileImg.image = image
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...