Я пытаюсь передать строку данных через segue.Данные JSON были проанализированы с использованием JSONDecoder и правильно отображаются в консоли.Все работает нормально, за исключением случаев, когда я пытаюсь передать данные в детали ViewController, я либо не получаю данных, либо ошибка.Я использую prepareForSegue
для передачи данных.
Вот код для ViewController:
var nowPlaying = [Results]()
var searchTitle = [Results]()
struct NowPlaying: Codable {
let results: [Results]
}
struct Results: Codable {
let title: String
let poster_path: String?
let id: Int
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
var films: [Results]
if searchBar.text == "" {
films = [nowPlaying[indexPath.row]]
}
print("\(films)")
performSegue(withIdentifier: "detailsSegue", sender: films)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailsSegue" {
if let detailView = segue.destination as? DetailsView {
let filmCell = sender as? Results
detailView.filmId = filmCell!.id
print("\(filmCell!.id)")
}
}
}
Я получаю ошибку при detailView.filmId = filmCell.id
Невозможно присвоить значение типа 'Поток 1:Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения
Это то, что выводится на консоль для print("\(films)")
:
[Film_Bee.FilmsViewController.Results(title: "Venom", poster_path:
Optional("/2uNW4WbgBXL25BAbXGLnLqX71Sw.jpg"), id: 335983)]
Ничего не печатается для print("\(filmCell!.id)")
Я не уверен, почему он не находит идентификатор в результатах, если он был найден при анализе и когда выбрана ячейка.
Вот мой код из DetailsView:
class DetailsView: UIViewController {
let homepage = FilmsViewController()
var filmId = 0
var filmDetails = [Details]()
struct Results: Codable {
let title: String
let poster_path: String?
let id: Int
}
struct Details: Codable {
let title: String
let poster_path: String
}
override func viewDidLoad() {
super.viewDidLoad()
print(filmId)
}