Разбитое изображение
У меня проблема, когда я получаю данные через Alamofire. Здесь я определил функцию, в которой данные передаются в контроллер представления с завершением.
func getVideoDetail(video_id: String, completionHandler: @escaping (VideoDetail!) -> Void) {
let PageURL = URL(string: "\(websiteLinks.api)/?type=get_detailss&video_id=\(video_id)")
Alamofire.request(PageURL!).responseJSON { (response) in
switch response.result {
case .success:
var getDetail: VideoDetail?
let jsonData = response.data
do {
let root = try JSONDecoder().decode(DetailsData.self, from: jsonData!)
getDetail = root.data
//THIS IS WHERE YOUR PREVIOUS ERROR OCCURRED
} catch {
print("Error: \(error)")
}
DispatchQueue.main.async {
completionHandler(getDetail!)
}
case .failure(let error):
print(error)
}
}
}
И с помощью следующего кода я получаю данные в моем ViewController.
videoModel.getVideoDetail(video_id: video_Id) { (Details) in
self.videoDetails = Details
self.playVideo()
}
Вот мой TableView:
Эта ячейка является Customcell. Я зарегистрировал все пользовательские ячейки (UINIBS) на моем viewDidLoad
// REGISTER NIBS FOR THE CELLS
tableView.register(UINib(nibName: "DetailsCell", bundle: nil), forCellReuseIdentifier: "DetailsCell")
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.row {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "DetailsCell") as! DetailsCell
cell.likeLabel.text = videoDetails!.category_name!
cell.dislikeLabel.text = videoDetails!.category_name!
cell.delegate = self
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "PlayerUserCell") as! PlayerUserCell
return cell
default:
let cell = tableView.dequeueReusableCell(withIdentifier: "newestCell") as! NewestCell
return cell
}
}
Но если я сейчас запущу приложение и выберу ячейку, программа вылетает. Что я здесь не так делаю?
Это мой код didSelectRow на контроллере HomeController. Я передаю здесь video_id для функции getDetails:
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let playerVC = storyboard.instantiateViewController(withIdentifier: "playervc") as! PlayerVC
playerVC.videoURL = URL(string: featuredVideos[indexPath.row - 2].video_location!)
playerVC.video_Id = featuredVideos[indexPath.row - 2].video_id
playerVC.commentVideoId = featuredVideos[indexPath.row - 2].id
self.present(playerVC, animated: true, completion: nil)
}