从API中抓取图像

时间:2017-03-06 10:08:24

标签: ios swift3 uiimage xcode8 uicollectionviewcell

我想从api中获取图像,该api提供图像的网址,我是否需要另一个api调用来从他们的网址下载图像?我如何抓取每个图像并将其附加到数组中并将其显示在我的集合视图单元格中。我已经在课堂范围之外宣布了这一点 var videoArray = [funnyVideos]()

Alamofire.request(_url).responseJSON { (response) in

    print(response.result.value!)
    if let dict = response.result.value as? Dictionary<String, AnyObject> {
        if let result = dict["result"] as? Dictionary<String, AnyObject> {
            if let data = result["data"] as? [Dictionary<String, AnyObject>] {

                for obj in data {
                    let mainObj = funnyVideos()
                    mainObj.parseData(from: obj)
                    videoArray.append(mainObj)
                    // print (obj)
                }

                if let image1 = data[0]["image"] as? String {        
                    print(image1)
                }

                self.collection.reloadData()   
            }   
        }
    }
    completed()
}

这个功能是另一个类:搞笑视频

func parseData(from: Dictionary<String, AnyObject>){
    if let name = from["title"] as? String{
        self._name = name.capitalized  
    }
}

这个func配置单元格是另一个类,它保存了集合单元格的标签和图像视图的出口。

func configureCell(_ funny : funnyVideos) {
    self.funny = funny
    nameLabel.text = self.funny.name.capitalized
    //   imageView.image = UIImage()
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt      indexPath: IndexPath) -> UICollectionViewCell {
    fun = videoArray[indexPath.row]
    cell.configureCell(fun)
}

我有什么选项可以从UIImage容器中的url中获取它们?并print(image1)打印图像的网址。

4 个答案:

答案 0 :(得分:0)

试试吧,

您可以使用AlamofireImage下载图像并设置为集合视图。

答案 1 :(得分:0)

是的,您需要调用从json获取的图像的url,从url获取图像,您可以使用 像这样使用

func collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath) - &gt; UICollectionViewCell {

    guard let identifier = cellIdentifier else{
        fatalError("Cell identifier not provided")
    }
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier ,
                                                                     for: indexPath) as UICollectionViewCell

让imageUrl = arrayImage [indexPath.row]

cell.imageView.setImage(URL:&#34; IMAGEURL&#34)

返回单元格

}

https://github.com/rs/SDWebImage https://github.com/onevcat/Kingfisher

答案 2 :(得分:0)

是的,你必须在图片的网址上再打一次api。您可以使用AlamofireImage或sdwebimage库下载图像。

首先使用普通Alamofire库命中Api并获取所有图像的链接并将其保存在dict或数组中。然后使用AlamofireImage或sdwebimage进行另一次api调用。

你应该尝试sdwebimage becauz很容易

答案 3 :(得分:0)

您应该使用名为Kingfisher的Swift库 它将在您提供URL时处理缓存以及下载图像。 这是入门的链接。 Cheat Sheet