gpt4 book ai didi

swift - 在 Swift 中解析 iOS PFFile 下载顺序

转载 作者:行者123 更新时间:2023-11-30 10:12:55 25 4
gpt4 key购买 nike

我试图从 Parse 中检索图像作为 PFFiles,但它们返回的顺序每次都会改变。我找到了另一个解决这个问题的问题/答案,但它是在 Obj-C 中,一小时后,我无法在 Swift 中翻译工作解决方案。

这是原始线程:

Parse PFFile download order iOS

这是我的代码:

func retrieveItemImage() {

var query = PFQuery(className: "Items")
query.orderByDescending("createdAt")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
let imageObjects = objects as! [PFObject]
for object in imageObjects {
let thumbnail = object["image1"] as! PFFile

thumbnail.getDataInBackgroundWithBlock{(imageData: NSData?, error: NSError?) -> Void in
if error == nil {
if let image = UIImage(data: imageData!) {
self.images.append(image)
self.theTableView.reloadData()
}
}
}
}
}
self.theTableView.reloadData()
}

}

最佳答案

我会这样做:

var images = [Int: UIImage]()

将其设为字典,然后您将获得下标的可选结果,并且永远不会出现数组超出范围的异常。

然后我会将您的代码部分重写为:

            for (index, object) in enumerate(imageObjects) {
let thumbnail = object["image1"] as! PFFile

thumbnail.getDataInBackgroundWithBlock{(imageData: NSData?, error: NSError?) -> Void in
if error == nil {
if let image = UIImage(data: imageData!) {
self.images[index] = image

你永远不知道异步操作完成的顺序,但你的图像将按照指定的顺序,或者在字典中为零。您还应该更正您的 tableView 方法以检查它是否为零。另外,在我看来,每次加载图像后重新加载整个表格是无效的。

关于swift - 在 Swift 中解析 iOS PFFile 下载顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31902172/

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