У меня есть ASCellNode, и у него есть видеоузел поверх ячейки таблицы. Эти видео воспроизводятся с онлайн-адреса. Приложение получает URL-адрес через запрос в Alamofire. Проблема, которую я получаю, заключается в том, что как только Alamofire получает URL-адрес (из запроса), уже слишком поздно, потому что nodeforblockat уже вернулся, а Alamofire является asyn c, поэтому ячейка не получает URL-адрес намного позже. Есть ли способ перезагрузить текущую ячейку, чтобы она получила URL-адрес?
Я попытался перезагрузить таблицу после того, как Alamofire получит результат, но это вызывает бесконечное l oop. Я также рассматривал попытку сделать запрос синхронным, но понимая, что это плохой способ реализации этого.
Вот мой nodeblockforrowat (Существует также var за пределами этого блока кода называется videoUrl)
func tableNode(_ tableNode: ASTableNode, nodeBlockForRowAt indexPath: IndexPath) -> ASCellNodeBlock {
let video = self.videos[indexPath.row].id
// Send the request (moved it here to take longer)
AF.request("http://localhost/videos/\(video).json").responseJSON { response in
var JSON: [String: Any]?
do {
JSON = try JSONSerialization.jsonObject(with: response.data!, options: []) as? [String: Any]
guard let url = JSON!["url"] as? String else { return }
self.videoUrl = url
} catch {
return
}
}
let videoUrl = URL(string: self.videoUrl)
return {
let node = PostCellNode(with: videoUrl!)
node.debugName = "Node \(indexPath.row)"
return node
}
}