gpt4 book ai didi

ios - 如何使用 getDataInBackground 将整个 PFFile 数组转换为 UIImage 数组

转载 作者:行者123 更新时间:2023-11-29 05:51:10 25 4
gpt4 key购买 nike

我正在将 PFFile(图像)加载到 TableView 中,我想知道如何getDataInBackground 获取数组,而不浪费任何东西(内存或其他东西,我不知道)。这意味着以有效的方式将 PFFile 数组转换为 UIImage 数组。

我试过这个:

   self.UIImagesArray.removeAll(keepingCapacity: false)

for i in 0..<self.imagesArray.count { // imagesArray is a PFFile array
imagesArray[i].getDataInBackground(block: { (data, error) in
if error != nil {
print(error?.localizedDescription)
} else {
if let imageData = data {
if let imageToDisplay = UIImage(data: imageData) {
self.UIImagesArray.append(imageToDisplay)
}
}
}

if self.imagesArray.count == self.UIImagesArray.count {
self.tableView.reloadData()
}
})
}

我相信我无法向你解释结果,因为我觉得我的 UIImages 数组是随机填充的,所以每次我实现我的表格 View 时,每个单元格的图片总是/大多数时候都是不同的。

我很高兴能得到一些帮助。

最佳答案

您看到的顺序取决于下载每个图像所需的时间。您需要做的是将接收到的图像及其索引存储起来,然后在组装完所有图像后,将它们按正确的顺序转换回数组:

self.UIImagesArray.removeAll(keepingCapacity: false)

for i in 0 .. <self.imagesArray.count { // imagesArray is a PFFile array
var imgDict = [Int: UIImage]()
imagesArray[i].getDataInBackground(block: { (data, error) in
if error != nil {
print(error?.localizedDescription)
} else {
if let imageData = data {
if let imageToDisplay = UIImage(data: imageData) {
imgDict[i] = imageToDisplay
}
}
}

if self.imgDict.count == self.imagesArray.count {
self.UIImagesArray = imgDict.keys.sorted().compactMap { imgDict[$0] }

self.tableView.reloadData()
}

})
}

关于ios - 如何使用 getDataInBackground 将整个 PFFile 数组转换为 UIImage 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55658683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com