Swift Parse.com PFQuery按时间排序

Swift Parse.com PFQuery按时间排序,swift,parse-platform,Swift,Parse Platform,在my parse.com的帖子中,它看起来像这样: 我的查询如下所示: func QueryImagesFromParse(){ var query = PFQuery(className: "Posts") query.orderByDescending("createdAt") query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -&

在my parse.com的帖子中,它看起来像这样:

我的查询如下所示:

func QueryImagesFromParse(){
        var query = PFQuery(className: "Posts")
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
            if error == nil
            {
                if let newObjects = objects as? [PFObject] {

                    for oneobject in newObjects {
                        var text = oneobject["imageText"] as! String
                        var username = oneobject["username"] as! String
                        var time = oneobject.createdAt
                        var userImageFile = oneobject["imageFile"] as! PFFile
                        userImageFile.getDataInBackgroundWithBlock({ (imageData:NSData?, error:NSError?) -> Void in
                            if error == nil {
                                let newImage = UIImage(data: imageData!)

                                var OneBigObject = Details(username: username, text: text, CreatedAt: time!, image: newImage!)
                                self.arrayOfDetails.append(OneBigObject)

                                self.collectionView.reloadData()
                            }
                        })
                    }
                }
            }
        }
    }
NSDate扩展:

extension NSDate {
    var timeAgo: String {
        let minute = 60
        let hour = 60 * minute
        let day = 24 * hour
        let secondsAgo = Int(NSDate().timeIntervalSinceDate(self))
        if secondsAgo < 0            { return  "later"                           }
        if secondsAgo == 0           { return "now"                              }
        if secondsAgo == 1           { return "1 second ago"                     }
        if secondsAgo < minute       { return "\(secondsAgo) seconds ago"        }
        if secondsAgo < (2 * minute) { return "1 minute ago"                     }
        if secondsAgo < hour         { return "\(secondsAgo/minute) minutes ago" }
        if secondsAgo < 2 * hour     { return "1 hour ago"                       }
        if secondsAgo < day          { return "\(secondsAgo / hour) hours ago"   }
        let formatter = NSDateFormatter()
        formatter.dateFormat = "M/d/yy"
        return formatter.stringFromDate(self)
    }
}

我曾尝试使用query.orderByDescending对最新上传进行排序,但没有效果。。上传是随机的,而不是最新的。我做错了什么?我正在viewDidLoad中运行func QueryImagesFromParse。

用于获取userImageFile然后追加OneBigObject的GetDataInBackgroundithBlock方法是异步的,因此不能保证数组的顺序正确

尝试删除该方法并改用此方法:

let imageData = userImageFile.getData()

我尝试在getDataInBackgroundithBlock方法之后添加它,这使它工作起来。但是我在运行时的输出中得到了很多错误消息:看这里:通常不推荐使用同步方法,因为它们会阻塞UI。我假设您正在下载要在UIImageView中显示的图像数据。在这种情况下,当您需要显示图像时,我将跳过此处获取图像数据,而是使用类似Swift或Objective-C的库进行异步图像加载。@Eri Sklii忘记在上面的注释中标记您。