ios - 使用 alamofire 和 swiftyJson 从 UICollectionViewCell 内的 UICollectionView 的 api 中获取数据

标签 ios swift xcode uicollectionview alamofire

您好,我正在开发一个用于检索电影数据的应用程序,但我遇到了一个问题,我正在使用 CollectionView 来显示电影类别,并且在这些类别中(在 Collection View 单元格内)我正在使用另一个 Collection View 来根据电影类别,但我无法填充第二个 Collection View 的单元格,因为它是自定义单元格的子类,我还为自定义单元格创建了一个 xib 文件,我正在尝试为第二个 Collection View 实现委托(delegate)和数据源方法在我为自定义单元格制作的类中,这是我的代码的一部分:

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
}

}

我认为我的问题是我不知道在哪里调用 parseJson 在 CategoryCollectionViewCell 中以及在哪里调用 reloadData()。
如果您对此有所了解,请帮助我
谢谢你。

最佳答案

认为它的工作:
写在你的 alamofire func 中,毕竟 (.success) & (.failure)

self.yourCollectionView.reloadData()

关于ios - 使用 alamofire 和 swiftyJson 从 UICollectionViewCell 内的 UICollectionView 的 api 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60066011/

相关文章:

ios - 返回 xcassets 中目录的字符串文件名数组的函数

ios - Segue 调用了两次 - IOS

iphone - 我们为什么要释放?

swift - 我更新 Xcode 11 和 iOS 13 后,firebase 文本检测不起作用

iphone - 使用 AFNetworking 和 cancelAllHTTPOperationsWithMethod 取消下载不起作用

ios - 在应用程序终止后使用 NSNotification 处理 UIViewController 中的 UILocalNotification

ios - CloudKit - NSPredicate 用于在引用列表中查找包含多个 CKReferences 的所有记录

xcode - 在 Snow Leopard 上安装 Mac OS X SDK 10.5

iphone - 如何陈述 'animation stop animating'的命令?

ios uiviewcontroller uitabbarcontroller 的 child