Я пытаюсь загрузить изображение из моего хранилища Firebase для отображения в представлении моего приложения.
у меня 2 класса в основном
Ниже приведено расширение источника данных 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 неправильно размещает изображение.
Убедитесь, что изображение, к которому вы пытаетесь получить доступ, поддерживает формат ios, а не SVG.
@Sreekuttan Это в формате JPG. Так что я думаю, что это поддерживается
@DougStevenson Код не отображает изображения. Отображается только белое поле. Когда я пытаюсь получить доступ к imageView.image. Это дает ноль. добавят подробности в вопрос.
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 правильно ли указана ваша строка изображения? или формат вашего изображения правильный?
Ссылочная строка в sd_setImage(with: reference) точно равна местоположению хранилища в Firestore. Может быть, это как-то связано с токеном доступа?
@Zeyad Zeyad, я отредактировал свой ответ. Попробуйте любой из них. Надеюсь, что это работает.
Как вы передали referenceImage типа StorageRef как строку в следующей строке?
Что на самом деле делает этот код, кроме того, что вы ожидаете? Пожалуйста, отредактируйте вопрос, чтобы он был более четким, и включите свои данные об отладке.