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")
}
我尝试根据从 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")
}