Я использую API YouTube с alamofire для получения видеоданных (URL-адрес изображения, заголовок, описание и т. Д.). Ячейки показывают одно и то же изображение всякий раз, когда я получаю данные и добавляю их в свой массив. Но когда я печатаю заголовки и URL-адреса в методе «getfeed», дисплей отображается правильно.
view cellForItemAtIndexPath. Я думаю, что проблема здесь. всякий раз, когда я печатаю title & url в функции cellForItemAt, данные повторяются
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoCell", for: indexPath) as! PhotoCell
//image
let thumbnailUrl = URL(string: videos[indexPath.item].videoThumnailUrl)
cell.imageView.kf.setImage(with: thumbnailUrl)
//prints same title & img url
print("title cell ",videos[indexPath.item].videoTitle)
print("thmbUrl cell",videos[indexPath.item].videoThumnailUrl)
return cell
}
getfeedVideos, но когда я печатаю заголовок и url в функции get feed, они правильно набираются. данные добавляются в массив tempVideos
func getFeedVideos() {
Alamofire.request(videoURL,
method: .get,
parameters:["part":"snippet",
"regionCode":"US",
"chart":"mostPopular",
"maxResults":3,
"key":API_KEY]).responseJSON {
response in
if response.result.isSuccess {
print("Success! Got the video data")
let videoJSON : JSON = JSON(response.result.value!)
//print(videoJSON)
//creating video object off of JSON response
let videoObj = Video()
var tempVideos = [Video] ()
//loops through all items in videoJson and assigns each value
for (_, value):(String, JSON) in videoJSON["items"] {
videoObj.videoId = value["id"].stringValue
videoObj.videoTitle = value["snippet"]["title"].stringValue
videoObj.videoDescription = value["snippet"]["description"].stringValue
videoObj.videoThumnailUrl = value["snippet"]["thumbnails"]["standard"]["url"].stringValue
//prints different title & img url
print("title ",videoObj.videoTitle)
print("thmbUrl" ,videoObj.videoThumnailUrl)
tempVideos.append(videoObj)
}
self.videos = tempVideos
self.collectionView.reloadData()
} else {
print("Error \(String(describing: response.result.error))")
}
}
}
объект класса видео
import UIKit
class Video: NSObject {
var videoId: String = ""
var videoTitle: String = ""
var videoDescription: String = ""
var videoThumnailUrl: String = ""
}
, и когда я запускаю окончательный код, все ячейки показывают одно и то же изображение.