如何使用 SwiftyJSON 显示 API 图像

Posted

技术标签:

【中文标题】如何使用 SwiftyJSON 显示 API 图像【英文标题】:How to show the API image using SwiftyJSON 【发布时间】:2020-01-22 17:05:05 【问题描述】:

我想知道如何将 API 图像从 API 显示到 UIImage。我可以从控制台获取结果,但无法将图像从 Internet 显示到集合视图。

public var foodImage = [String]()
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! MainPageCollectionViewCell
    //Below is fine and it can display food title from Internet
    cell.FoodTitle.text = self.foodTitle[indexPath.item]
    //Cannot display API image from Internet
    cell.Food.image = foodImage[indexPath.item] as? UIImage

    return cell

获取API结果的代码如下:

self.foodImage = json["hits"].arrayValue.map $0["recipe"]["image"].stringValue
print(self.foodImage)

【问题讨论】:

我认为你从你的 API 中获得了图片的链接。使用 [Kingfisher] github.com/onevcat/Kingfisher 进行图像缓存。 【参考方案1】:

有一个可可豆荚可用于从 URL 加载图像 click here

将此添加到您的 pod 文件中

pod 'SDWebImage'
import SDWebImage

imageView.sd_setImage(with: URL(string: yourURLString), placeholderImage: UIImage(named: "placeholder.png"))

【讨论】:

我有一个数组来存储图像 URL,我想使用 Collection View 显示它。是否可以使用 SDWebImage? yes @lpy , SDWebImage 仅用于从 URL 下载和显示图像。 我不知道在 SSWebImage 中使用数组的语法。你能举个例子吗? 如果让 cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCollVCell", for: indexPath) 为? ImageCollVCell cell.imgaeView.sd_setImage(with: URL(string: arr[indexPath.row]) return cell 我添加了 cell.Food.sd_setImage(with: URL(string: foodImage[indexPath.row])),但是发生了错误。 (线程 1:致命错误:索引超出范围)。有什么想法吗?非常感谢。

以上是关于如何使用 SwiftyJSON 显示 API 图像的主要内容,如果未能解决你的问题,请参考以下文章

SwiftyJSON:如何添加令牌?

我应该如何使用 Alamofire 和 SwiftyJSON 解析来自 API 的 JSON 响应?

从 SwiftyJSON API 分配解析的 JSON 显示错误

如何使用 Swift 3 将图像从 Rest Api 加载到视图中加载方法

如何从 JSON 数组 SwiftyJSON 中获取数据?

UIView 在使用 SwiftyJSON 和 Alamofire 从 API 返回的数据之前被渲染