Swift. Вытягиваю картинки в ячейки через api. Все билдится, нннно вместо картинок - пусто. Возвращается nil. Пол дня сижу не могу понять!
Swift. Я новичок еще. Вытягиваю картинки в ячейки через api. Все отлично билдится, нннно вместо картинок - пусто. Возвращается nil. Пол дня сижу не могу понять!!
Если этот ответ есть где-то, прошу простить, и если не сложно дать ссылку, благодарю.
Ссылка api - https://swiftbook.ru//wp-content/uploads/api/api_courses
Где туплю подскажите?
Заранее очень благодарен за помощь и разъяснения !!!
import UIKit
class CourseCell: UITableViewCell {
@IBOutlet var courseImage: UIImageView!
@IBOutlet var courseNameLabel: UILabel!
@IBOutlet var numberOfLessons: UILabel!
@IBOutlet var numberOfTests: UILabel!
func configure(with course: Course) {
courseNameLabel.text = course.name
numberOfLessons.text = "Number of lessons \(course.number_of_lessons ?? 0)"
numberOfTests.text = "Number of tests \(course.number_of_tests ?? 0)"
DispatchQueue.global().async {
guard let stringUrl = course.imageUrl,
let imageURL = URL(string: stringUrl),
let imageData = try? Data(contentsOf: imageURL)
else {
return
}
DispatchQueue.main.async {
self.courseImage.image = UIImage(data: imageData)
}
}
}
}
Ответы (2 шт):
Проблема здесь в том, что вы используете не ту очередь для работы с UI (global), в то время как нужно использовать main, исправление:
func configure(with course: Course) {
courseNameLabel.text = course.name
numberOfLessons.text = "Number of lessons \(course.number_of_lessons ?? 0)"
numberOfTests.text = "Number of tests \(course.number_of_tests ?? 0)"
DispatchQueue.main.async {
guard let stringUrl = course.imageUrl,
let imageURL = URL(string: stringUrl),
let imageData = try? Data(contentsOf: imageURL)
else {
return
}
self.courseImage.image = UIImage(data: imageData)
}
}
Проблема решилась, когда я с включенным VPN забилдил очередной раз, и все картинки погрузились. Все потому что в Украине залакированы сейчас все .ru домены, а url api как раз с .ru
Надо было видеть мои глаза