在 Swift 中将图像和标题从数组(image_url)迭代和加载到 ViewController 中的正确方法

Posted

技术标签:

【中文标题】在 Swift 中将图像和标题从数组(image_url)迭代和加载到 ViewController 中的正确方法【英文标题】:Proper method to Iterate and Load Images and title from Array (image_url) into ViewController in Swift 【发布时间】:2019-11-03 13:28:47 【问题描述】:

我在原型单元格中使用带有 ImageView 的 CollectionView。我检索 API 结果(标题和 image_url),我想通过数组在集合视图中显示图像和标题以检索标题和 image_url。

是否可以检索 image_url 并在 CollectionView 中显示图像?

我使用 SwiftyJSON 创建数组,我可以在数组中检索 API 结果(包括标题和 image_url)(可以找出结果)。但我无法在集合视图中显示它。

【问题讨论】:

你能显示minimal reproducible example吗? 【参考方案1】:

我针对您的问题发布了一个示例代码,可能会对您有所帮助。

// 从 API 中检索的数组

let titleAndImageArray = []()

//CollectionView 数据源方法

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 

    return titleAndImageArray.count




func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
 let cell:YourCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! YourCollectionViewCell
 let labelTitle = titleAndImageArray[indexPath.row].title
 let musicImageUrlString = titleAndImageArray[indexPath.row].image_url
 cell.yourLabelOutletName.text = labelTitle
 loadImage(indexPath: indexPath, cell: cell, urlString:musicImageUrlString)
    

*我创建了一个 loadImage 函数来从使用 SDWebImage 库的 URL 获取图像,SDWebImage 库是异步图像下载器SDWebImage *

  func loadImage(indexPath:IndexPath,cell:YourCollectionViewCell,urlString:String)
    cell.yourImageViewOutletName.sd_setImage(with: URL(string: urlString), placeholderImage: UIImage(named: "App-Default"),options: SDWebImageOptions(rawValue: 0), completed:  (image, error, cacheType, imageURL) in

    )

【讨论】:

func fetchFoodList() let url = URL(string: "MYAPIKey&q=chicken%20breast&page=2") guard let unwrappedUrl = url else return let task = URLSession.shared.dataTask(with: unwrappedUrl, completionHandler: (data, response, error)in if error != nil print(error!) else if let urlContent = data do let json = try JSON(data:data!) let recipes = json["recipes"] print(recipes) for arr in recipes.arrayValue print(arr["title"]) print(arr["image_url"]) catch print("JSON Processing Failed") )task.resume( ) 您的代码似乎正确。您可以将title和image_url存储在数组中,然后将数组用作集合视图数据源方法的数据模型。 但还是无法在集合视图中显示图片和标题

以上是关于在 Swift 中将图像和标题从数组(image_url)迭代和加载到 ViewController 中的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将数值数据数组转换为 RAW 图像数据?

在 Swift 中将 ui Image 制作成完美的圆圈

使用 Swift 3 在 iOS 10 中将图像从服务器加载到 Apple Map 中的注释视图

Swift从数组中选择一个随机图像

如何在 Swift 中像数组一样访问图像资源

如何在opencv中将图像从CV_8UC1转换为CV_32FC1类型?