ios swift parse:orderByAscending被忽略了

时间:2015-03-11 13:55:38

标签: ios swift parse-platform

当我运行此查询时:

var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.includeKey("lesson")
query.orderByAscending("createdAt")
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in ........

结果永远不会按数据排序,实际上它们总是按objectId排序。

我的查询有什么问题?

this is my data sorted by date 这是我的解析数据,按日期排序

this is my output based on the shown query

这是我在设备上的输出,按objectId ...

排序

2 个答案:

答案 0 :(得分:0)

有同样的问题。尝试将其添加到上面的代码块中,它对我有用:

let array:NSArray = self.queryobjectsArray.reverseObjectEnumerator().allObjects
self.queryobjectsArray = NSMutableArray(array: array)

答案 1 :(得分:0)

整个问题结束时很奇怪...... 我之前做过的,就像在同一个项目中的其他视图中一样,我从解析中获取数据并将其固定到本地存储,并调用第二种方法从本地存储中获取数据。通过这种方式,我可以从本地存储中快速访问数据,并在后台进行更新以供以后使用。

由于某种原因,从在线获取的数据按日期排序。 但是从本地引脚获取的数据不是,这就是为什么我的应用程序在错误的时间线中显示数据的原因。

我无法理解或解决这个问题,但是我通过移除本地固定来帮助自己,只是从互联网上获取数据。

我将展示原始流程是什么:

var cardSetObjects: NSMutableArray! = NSMutableArray()

override func viewDidAppear(animated: Bool) {
    self.fetchAllObjectsFromLocalDatastore()
    self.fetchAllObjects()
}

func fetchAllObjectsFromLocalDatastore(){
    var query = PFQuery(className: "CardSet")
    query.fromLocalDatastore()
    query.orderByDescending("createdAt")
    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if (error == nil){

            var temp: NSArray = objects as NSArray
            self.cardSetObjects = temp.mutableCopy() as NSMutableArray
            self.tableView.reloadData()

        }else{
            println(error.userInfo)
        }
    }
}

func fetchAllObjects(){
    var query = PFQuery(className: "CardSet")
    query.whereKey("user", equalTo: PFUser.currentUser())
    query.includeKey("lesson")
    query.orderByDescending("createdAt")
    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if (error == nil) {

            PFObject.pinAllInBackground(objects, withName:"CardSet", block: nil)
            self.fetchAllObjectsFromLocalDatastore()

            self.tableView.reloadData()

        }else{
            println(error.userInfo)
        }
    }
}

我最后做的是删除fetchAllObjectsFromLocalDatastore方法并将数据放入fetchAllObjects中的NSMutableArray。

但我仍然想知道为什么我的代码有这个排序问题...... 也许有人会知道...