Загрузка файла изображения из хранилища Firebase с помощью SDWebImage

Я пытаюсь загрузить изображение из моего хранилища Firebase для отображения в представлении моего приложения.

у меня 2 класса в основном

  • Основной «ClassView», который включает в себя tableView.
  • Пользовательский tableViewCell — «ClassCell» (этот класс включает в себя imageView, где я хочу отображать изображение из firestore. — imageView называется classImage.

Ниже приведено расширение источника данных tableView.

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self
    tableView.register(UINib(nibName: K.tableCellNibName, bundle: nil), forCellReuseIdentifier: K.tableCellIdentifier)
    
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let storageRef = storage.reference()
    let reference = storageRef.child(K.FStore.classImagesPath)
    let placeholderImage = UIImage(named: "placeholder.png")
    let imageView: UIImageView = self.imageView
    let cell = tableView.dequeueReusableCell(withIdentifier: K.tableCellIdentifier, for: indexPath) as! ClassCell
    
        //below is where I try to set the my image but it is not changing anything
        cell.classImage?.sd_setImage(with: reference, placeholderImage: placeholderImage)
      

       //This I tried to make sure that I am can access the image right and it worked just fine
       // cell.classImage?.backgroundColor = .black
    
    return cell
}

Изображение не отображается с помощью метода sd_setImage. Любая помощь будет очень признательна, если у меня есть какая-либо ошибка в моем коде или отсутствует объявление где-либо.

Ниже показано, что я получаю, когда запускаю симулятор. Вместо изображения, отображаемого в этих черных ящиках, они пусты. Кроме того, imageView.image возвращает nil, поэтому, скорее всего, sd_setImage неправильно размещает изображение.

Что на самом деле делает этот код, кроме того, что вы ожидаете? Пожалуйста, отредактируйте вопрос, чтобы он был более четким, и включите свои данные об отладке.

Doug Stevenson 14.12.2020 17:25

Убедитесь, что изображение, к которому вы пытаетесь получить доступ, поддерживает формат ios, а не SVG.

Sreekuttan 14.12.2020 17:54

@Sreekuttan Это в формате JPG. Так что я думаю, что это поддерживается

Zeyad 15.12.2020 12:31

@DougStevenson Код не отображает изображения. Отображается только белое поле. Когда я пытаюсь получить доступ к imageView.image. Это дает ноль. добавят подробности в вопрос.

Zeyad 15.12.2020 12:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
586
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
self.imgSidebarMenuImage.sd_imageIndicator = SDWebImageActivityIndicator.whiteLarge
self.imgSidebarMenuImage.sd_setImage(with: URL(string: (person["image"] as! String)), placeholderImage: UIImage(named: "logo"))

попробуй это

#1

 let storage = Storage.storage().reference(withPath: “YOUR_PATH”)
       storage.downloadURL { (url, error) in
           if error != nil {
               print((error?.localizedDescription)!)
               return
       }
       print(“Download success”)
       
      //url = your will get an image URL
     self.someImageURL = url!
   }

#2

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                // cell identifier methods
 var item = itemData[indexPath.row]

      let referenceImage: StorageReference = storageRef.child("YOUR_PATH")
      let url = URL(string: referenceImage!)!
                    
                    
                    
cell.itemImage?.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "placeholder"))

                }
            }

            return cell
    }

Я добавил указанную выше строку, но все равно получаю пустые изображения.

Zeyad 15.12.2020 13:14

@Zeyad правильно ли указана ваша строка изображения? или формат вашего изображения правильный?

Dishant Rajput 15.12.2020 13:34

Ссылочная строка в sd_setImage(with: reference) точно равна местоположению хранилища в Firestore. Может быть, это как-то связано с токеном доступа?

Zeyad 15.12.2020 14:09

@Zeyad Zeyad, я отредактировал свой ответ. Попробуйте любой из них. Надеюсь, что это работает.

Dishant Rajput 15.12.2020 14:43

Как вы передали referenceImage типа StorageRef как строку в следующей строке?

Zeyad 29.12.2020 12:01

Другие вопросы по теме