gpt4 book ai didi

ios - 从解析中下载多个 (4<) PFFile 并使它们同步到正确的数组中

转载 作者:行者123 更新时间:2023-11-29 01:34:09 24 4
gpt4 key购买 nike

所以我有一个用户名和一些来自 parse.com 的 FFile

类)图像类

  • B) 列:PFFile) imageOne
  • C) 列:PFFile) imageTwo
  • D) 列:PFFile) imageThree
  • E) 列:PFFile) imageFour
  • F) 列:PFFile) imageFive
  • G) 列:PFFile) imageSix

如何将它们一起下载,同时保持它们在数组中的正确顺序或索引? Asyncro 真的把我搞得一团糟,我无法理解它。有些图像比其他图像花费的时间更长。

我可以用

imageOne.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
if error == nil {
let imageOne = UIImage(data:imageData)
self.imageOneArray.append(imageOne)
}
}
//repeat
//imageTwo.getData...
//imageThree.getData...
//imageFour.getData...
//imageFive.getData...
...etc.

但它的作用是,由于在后台执行的 block ,它会在不同的时间下载它们。然后当我想在我的表格 View 中显示它们时。它出了问题。

我试过的。我已经下载了 FFile,然后在 cellForRowAtIndexPath 中将 NSData 转换为 UIImages,但它很慢,因为当我向上或向下滚动时它总是将 NSData 转换为 UIImage,这不是一个好的体验。

有更好的方法吗?

最佳答案

您只需要使用调度组同步但同时加载所有图像:

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
let group = dispatch_group_create()

//////////////////////////////// Download block
dispatch_group_async(group, queue) { () -> void in

// load your image here synchronously (use getData instead of getDataInBackgroundWithBlock)
// then when you downloaded it, insert it at the correct array index
}
//////////////////////////////////
// repeat above block for each image you have

// wait for all of them to finish
dispatch_group_wait(group, DISPATCH_TIME_FOREVER)

// Here you can access your downloaded image array which must be in the correct order

关于ios - 从解析中下载多个 (4<) PFFile 并使它们同步到正确的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154666/

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