【问题标题】:How to Convert URL Images to UIImages in Swift5 and append into a array如何在 Swift 5 中将 URL 图像转换为图像并附加到数组中
【发布时间】:2019-07-06 05:26:05
【问题描述】:

我在 Swift 5 代码中有一个用于获取图像的 API 调用 GET,我正在获取图像的 url,我必须将 url 更改为 UIImage 以将 url 附加到 arrayimages=UIImage,url 的数据在那里但它没有附加到arrayImages。我的任务是将所有数据图像放入集合视图中,如果有其他方法,请指导我,谢谢。

--->。让 arrayImages = UIImages

 guard let data = response?.data(using: .utf8) else   {
            return
        }
        do {
            let jsonObj = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String: Any]
            if jsonObj["error"] as! Bool == false {
                print("galleryResponse/\(jsonObj)")
                let jsonResponse = jsonObj["response"] as! [[String: Any]]

                for i in 0...jsonResponse.count-1 {
                    let strGalleryImage = jsonResponse[i]["Gallery_Full"] as? String

                    if let imgurl = strGalleryImage {

                        self.userImageString1 = "\(USER_IMAGE_BASE_URL)\(imgurl)"

                    }
                    var imageString1: String?
                    var url1: URL!
                    imageString1 = self.userImageString1


                    if let imageUrlString1 = imageString1 {
                        url1 = URL(string: imageUrlString1)

                        DispatchQueue.global().async { [weak self] in
                            if let data = try? Data(contentsOf: url1!){
                                 if  let imagedata = UIImage(data: data){

                                    print("YES_IMG")

                                    if data != nil {

                                         DispatchQueue.main.async {
                                            print("append_IMG")
                                        self!.arrimages.append(imagedata)


                                        }
                                    }
                                }


                            }


                        }


                    }


                //}
                }
            }
        } catch {
            print("Unable_to_load_data:/\(error)")
        }

            })


    }

【问题讨论】:

    标签: arrays collections uicollectionview imagedownload swift5.1


    【解决方案1】:

    您可以使用 AlamofireImage pod 将图片 URL 转换为图片。

    首先,您需要安装 pod 文件 pod 'AlamofireImage'。然后在你的 ViewController 中import AlamofireImage

    这是实现它的方法。

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "YourCollectionViewCellIdentifier", for: indexPath) as! YourCollectionViewCell
        Alamofire.request("your image URL in String formate").responseImage { response in
            debugPrint(response)
            debugPrint(response.result)
            if let image = response.result.value {
                cell.YourImage.image = image
            }
        }
        return cell
    }
    

    【讨论】:

      【解决方案2】:
      Hi I found out the Best solution i.e, through SDWebImages. 
      * Fist I get the response into url and then append it to a array = (String)[]
      * then I called the sdwebimages in cellforitem function...
          ####CODE 
      
      // getting the url images into an array of string
      
        let jsonResponse = jsonObj["response"] as! [[String: Any]]
                          print("galleryResponse/\(jsonObj)")
      
      
                          for i in 0...jsonResponse.count-1 {
             let strGalleryImage = jsonResponse[i]["Gallery_Full"] as? String
                              print("o12\(strGalleryImage!)")
      
              let str =  String((strGalleryImage?.dropFirst(11))!) as? String
                              print("LAAL\(str)")
      
                      if let imgurl = str {
      
                          self.arrimages.append(imgurl)
                          print("kl\(self.arrimages)")
                          self.collectionView.reloadData()
              }
      
      
      
      
      THEN ->
          //Calling the images into cellforitem 
      
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
              let cell  = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionViewCell
      
             // called the url array into sd_setimages 
      
              cell.imgProfile.sd_setImage(with: URL(string: arrimages[indexPath.row]), placeholderImage: UIImage(named: "placeholder.jpg"))
      
              return cell
          }
      
      Thanks for the answers but this is simplest solution of all...:)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多