如何防止更新的 Parse 对象移动到数组的前面?

How can I prevent updated Parse objects from moving to the front of my array?

对于上下文:

我有一个 UITableView,它显示 UITableViewCells 用户完成的绘图。此 tableview 提取存储在我的 Parse 帐户中的数据,并试图按时间倒序显示单元格,最近提交的绘图在顶部。

我在每个单元格上都有一个 "like" 按钮,用于将当前用户名添加到每个绘图对象的数组中。如果当前用户名存在于该数组中,则赞按钮已经着色,表明他们已经喜欢了该绘图。

但是,当用户 "likes" 绘图时,他们的名字使用 .addUniqueObject 添加到数组中,"updates" Parse 上的绘图对象,并以某种方式将其移动到阵前。因此,在 Feed 顶部显示旧图只是因为有人喜欢它。

我怎样才能避免这种情况?我想忽略这样一个事实,即在我的解析对象上将当前用户名添加到 whoLiked 数组会使应用程序认为它是最新的绘图。

我希望项目留在数组中并根据 time/date 提交的 在 Table 视图中排序图纸.

我的代码:

HomeFeedTableViewController中,我在几个地方调用了loadData()。这里是 loadData():

func loadData() {
    timelineData.removeAllObjects()
    var findHomeFeedData:PFQuery = PFQuery(className: "UserDrawing")

    findHomeFeedData.findObjectsInBackgroundWithBlock({
        (objects:[AnyObject]?, error:NSError?) -> Void in

        if error == nil{
            for object in objects!{
                let drawinn:PFObject = object as! PFObject
                self.timelineData.addObject(drawinn)
            }

            // this reverseObjectEnumerator thing just displays in chronological order (reversed order)
            let array:NSArray = self.timelineData.reverseObjectEnumerator().allObjects
            self.timelineData = NSMutableArray(array: array)

            self.tableView.reloadData()
        }
    })

}

timelineDatavar timelineData: NSMutableArray = NSMutableArray()

每个自定义 UITableViewCell (DrawingTableViewCell) 都有一个 heartButtonPressed IBAction:

@IBAction func heartButtonPressed(sender: UIButton) {

    let timelineData = dataSource?.getTimelineData(self)
    let indexPath = dataSource?.getIndexPath(self)

    println("timelineData is: \(timelineData)")
    println("indexPath is: \(indexPath)")

    let drawinn: PFObject = timelineData!.objectAtIndex(sender.tag) as! PFObject
    println("objectID is: \(drawinn.objectId)")

    PFUser.currentUser()?.addUniqueObject(drawinn.objectId!, forKey: "liked")
    PFUser.currentUser()?.saveInBackground()
    let user = PFUser.currentUser()?.username
    drawinn.addUniqueObject(user!, forKey: "whoLiked")
    drawinn.saveInBackground()

    if(parseObject != nil) {
        if var votes:Int? = parseObject!.objectForKey("votes") as? Int {
            votes!++

            parseObject!.setObject(votes!, forKey: "votes")
            parseObject!.saveInBackground()

            likesLabel?.text = "\(votes!)"
            self.heartButton.setImage(UIImage(named: "heart_button_filled"), forState: UIControlState.Normal)
        }
    }

    heartImageView?.hidden = false
    heartImageView?.alpha = 1.0

    UIView.animateWithDuration(1.0, delay: 1.0, options:nil, animations: {

        self.heartImageView?.alpha = 0

        }, completion: {
            (value:Bool) in

            self.heartImageView?.hidden = true
    })
}

如果有任何不清楚或需要进一步说明,请告诉我。谢谢!

我刚刚看到 Parse 向 PFQuery 提供 addAscendingOrderaddDescendingOrder。所以为了解决我的问题,我在 loadData() 方法中添加了以下行:

findHomeFeedData.addAscendingOrder("createdAt")