Swift 来自 JSON URL 的 UIImage 数组

Swift UIImage Array from JSON URL

我尝试根据从 JSON 请求接收到的 URL 数组创建一个 UIImages 数组,然后在 UITableView 中显示它们。 但是不知何故,我的 UIImage 数组保持为空并且没有接收任何数据。 其他数组,例如 memeURL 正在正确接收所有数据,但 memePics.count 保持为 0。

如果有人能告诉我我做错了什么,那就太好了。 此外,如果对于此任务有更好的方法来完成它 - 也将不胜感激!

变量:

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()
    }

在回调中添加加行

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

并使用 DispatchGroup 在完成时得到通知,例如

let g = DispatchGroup()
memeURL.forEach {  
        g.enter()
        MemeAPI.requestAPIImageFile(url:[=11=]) { (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")
}