我试图从一个从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()
}
在回调中添加加号行
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")
}