如何将图像放入由 Kingfisher 缓存下载的数组中?

How can I place images in array which is downloaded by Kingfisher cache?

这是我的Swift3代码。我需要将图像放入通过 Kingfisher 缓存下载的数组中。实际上,图像现在显示在 cell.itemImage 中,但我无法将这些图像放入 UIImage 数组。

有人能帮忙吗?

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ViewItemsCVC
    let Currency = UserDefaults.standard.string(forKey: "currency")
    cell.NameLabel.text = self.itemName[indexPath.row]
    cell.PriceLabel.text = "\(Currency ?? "INR")  \(self.itemPrice[indexPath.row])"
    let resource = ImageResource(downloadURL: URL(string: self.FullLink[indexPath.row])!, cacheKey: self.FullLink[indexPath.row])
    cell.itemImage?.kf.setImage(with: resource)
    return cell
}

我相信只传递 imageURl 就可以了。你可以做如下的事情

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let currentImageUrl = self.FullLink[indexPath.row]
    performSegue(withIdentifier: "YOU_SEGUE_IDENTIFIER", sender: currentImageUrl)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "YOUR_SEGUE_IDENTIFIER" {
        if let desinationController = segue.destination as? UIViewController {

            if let imageURL = sender as? String {
                 //make imageURL variable in destination controller
                desinationController.imageURL = imageURL
            }
        }
    }
}

//then on next controller you only have to set the imageviews with the url, since kingfisher will cache them, there will be no need to pass whole UIImage, just the link will suffice

yourcontroller.imageView.kf.setImage(with: imageURL)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    switch segue.destination {
    case let viewController as YourViewController:
        let row = collectionView.indexPathsForSelectedItems?.first?.row
        let image = ImageResource(downloadURL: URL(string: self.FullLink[row])!, cacheKey: self.FullLink[row])
        viewController.image = image

    default:
        break
    }
}