我在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)")
}
})
}
答案 0 :(得分:0)
您可以使用 AlamofireImage 窗格将图像URL转换为图像。
首先,您需要安装Pod文件 pod'AlamofireImage'。然后在您的ViewController中导入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
}
答案 1 :(得分:0)
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...:)