Привет, у меня есть проблема с пользовательским интерфейсом в моем приложении, я делаю закрытие UITableView, чтобы он отображал половину моего экрана и устанавливал делегат tableView и dataSource в viewDidLoad. но мой пользовательский интерфейс загружается очень медленно, я пытаюсь использовать DispatchQueue в моем запросе, но ничего не работает. и попробуйте DispatchQueue.global (qos: .background) .async в делегате и источнике данных tableView; отображается пользовательский интерфейс и отображается табличное представление, но есть предупреждение, скажем, делегат tableView и основной запуск dataSource в основном потоке. Но загрузка объекта тоже медленная. Кто-нибудь может подсказать, что мне делать?
это мой код
let tableView: UITableView = {
let view = UITableView()
view.backgroundColor = .white
view.layer.cornerRadius = 20
return view
}()
это моя функция и вызывается в viewDidLoad
fileprivate func setupTableView() {
DispatchQueue.main.async {
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.register(PrayerTimeViewCell.self, forCellReuseIdentifier: self.cellId)
self.tableView.separatorColor = .clear
self.tableView.backgroundColor = .clear
self.tableView.rowHeight = 53
}
}
это мой код запроса
DispatchQueue.global(qos: .background).async {
Alamofire.request(prayerUrl, method: .get, parameters: nil, encoding: URLEncoding.default, headers: nil).responseData(completionHandler: { (dataResponse) in
if let err = dataResponse.error {
print("Failed to fetch data:", err)
return
}
guard let data = dataResponse.data else { return }
do {
let prayerData = try JSONDecoder().decode(PrayerModel.self, from: data)
prayerData.items.forEach({ (item) in
let shubuh = Prayer(prayerName: "Shubuh", prayerIcon: #imageLiteral(resourceName: "PartlyCloudyNight"), prayerTime: item.fajr)
let dzuhur = Prayer(prayerName: "Dzuhur", prayerIcon: #imageLiteral(resourceName: "Sunny"), prayerTime: item.dhuhr)
let ashar = Prayer(prayerName: "Ashar", prayerIcon: #imageLiteral(resourceName: "PartlyCloudyDay"), prayerTime: item.asr)
let maghrib = Prayer(prayerName: "Maghrib", prayerIcon: #imageLiteral(resourceName: "Overcast"), prayerTime: item.maghrib)
let isya = Prayer(prayerName: "Isya", prayerIcon: #imageLiteral(resourceName: "Clear"), prayerTime: item.isha)
self.prayers.append(contentsOf: [shubuh, dzuhur, ashar, maghrib, isya])
})
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch let decodeErr {
print("Failed to decode:", decodeErr)
}
})
}