从JSON URL中提取的Swift UIImage数组。

问题描述 投票:0回答:1

我试图从一个从JSON请求中接收到的URL数组中创建一个UIImages数组,然后将它们显示在一个UITableView中,但不知何故,我的UIImage数组一直是空的,并且没有接收任何数据。其他的数组,例如memeURL接收到的数据都是正确的,但是memePics.count却停留在0上。

如果有人能告诉我我做错了什么,那就太好了!另外,如果这个任务有更好的方法来完成它--那将是非常感激的

Var:

var memePics: [UIImage] = []

循环将图片添加到阵列中。

while(i < memeURL.count) {
            MemeAPI.requestAPIImageFile(url: memeURL[i]) { (image, error) in
                guard let image = image else {
                    print("PIC IS NIL")
                    return
                }
                self.memePics.append(image)
                i+=1
            }
        }

RequestAPIImageFile函数。

class func requestAPIImageFile(url: URL, completionHandler: @escaping (UIImage?, Error?) -> Void) {
        let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
            guard let data = data else {
                completionHandler(nil, error)
                return}
            let downloadedImage = UIImage(data: data)
            completionHandler(downloadedImage, nil)
        }
        task.resume()
    }
arrays json swift uiimage
1个回答
1
投票

在回调中添加加号行

  self.memePics.append(image)
  }
  i+=1

并使用DispatchGroup在完成时通知,就像

let g = DispatchGroup()
memeURL.forEach {  
        g.enter()
        MemeAPI.requestAPIImageFile(url:$0) { (image, error) in
            guard let image = image else {
                print("PIC IS NIL")
                return
            }
            self.memePics.append(image) 
            g.leave()
        }
} 
g.notify(queue:.main) {
   print("All done")
}
© www.soinside.com 2019 - 2024. All rights reserved.