привет. Я работаю над приложением для извлечения данных о фильмах, но у меня возникла проблема. Я использую CollectionView для отображения категорий mov ie, и внутри этих категорий (внутри ячеек представления коллекции) я использую другой просмотр коллекции отображать фильмы в соответствии с категорией mov ie, но я не могу заполнить ячейки второго представления коллекции, потому что это подкласс пользовательской ячейки, и я также создал файл xib для настраиваемой ячейки, и я пытаюсь реализовать методы делегата и источника данных для второго представления коллекции внутри класса, который я сделал для пользовательской ячейки, это часть моего кода:
func parseJson(category:MovieCategory)
{
let currentCategory = category
let parameters = ["api_key":"8460d476d21be7e26a99234d8ca8de51","sort_by":"false","include_video":"false","with_genres":currentCategory.genreID]
Alamofire.request(AppModel().url, method: .get, parameters: parameters).responseJSON { (response) in
if response.result.isSuccess{
let movieJSON = JSON(response.result.value!)
for i in 0..<20{
let title = movieJSON["results"][i]["title"].stringValue
let posterPath = movieJSON["results"][i]["poster_path"].stringValue
let overview = movieJSON["results"][i]["overview"].stringValue
let dateReleased = movieJSON["results"][i]["release_date"].stringValue
let voteAverage = movieJSON["results"][i]["vote_average"].stringValue
print(title)
if let safeImage = AppModel().createImage(posterPath: posterPath)
{
let movieDetails = MovieDetails(movieTitle: title, poster: safeImage, voteAverage: voteAverage, overview: overview, releaseDate: dateReleased)
currentCategory.categoryMovies.append(movieDetails)
}
}
}
}
}
и где я хочу использовать извлеченные данные из API :
class CategoryCollectionViewCell:UICollectionViewCell,UICollectionViewDelegate,UICollectionViewDataSource{
@IBOutlet weak var sectionName: UILabel!
@IBOutlet weak var movieCollectionView: UICollectionView!
var sectionNumber:Int = 0
let appModel = AppModel()
override func awakeFromNib() {
super.awakeFromNib()
movieCollectionView.delegate = self
movieCollectionView.dataSource = self
movieCollectionView.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")
}
@IBAction func viewAllPressed(_ sender: UIButton) {
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
appModel.movieCategories.count
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return appModel.movieCategories[section].categoryMovies.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = movieCollectionView.dequeueReusableCell(withReuseIdentifier: "categoryCell", for: indexPath) as! CollectionViewCell
cell.posterImage.image = appModel.movieCategories[indexPath.section].categoryMovies[indexPath.item].poster
return cell
}
} это классы моделей:
class MovieDetails{
let movieTitle:String
let poster:UIImage
let voteAverage:String
let overview:String
let releaseDate:String
init(movieTitle:String,poster:UIImage,voteAverage:String,overview:String,releaseDate:String) {
self.movieTitle = movieTitle
self.overview = overview
self.poster = poster
self.releaseDate = releaseDate
self.voteAverage = voteAverage
}
}
class MovieCategory {
var genreID:String = ""
var categoryTitle:String = ""
var categoryMovies:[MovieDetails] = []
init(genreID:String,categoryTitle:String) {
self.genreID = genreID
self.categoryTitle = categoryTitle
}
}
Я думаю, что моя проблема в том, что я не знаю, где вызвать parse Json в стороне CategoryCollectionViewCell и где вызвать reloadData (). если вы знаете что-нибудь об этом, пожалуйста, помогите мне спасибо.