【问题标题】:Parse PFFile download order iOS in Swift在 Swift 中解析 PFFile 下载顺序 iOS
【发布时间】:2015-08-09 08:03:59
【问题描述】:

我正在尝试从 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()
        }

}

【问题讨论】:

    标签: swift parse-platform pffile


    【解决方案1】:

    我会这样:

    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
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多