繁体   English   中英

如何从解析查询中获得1000多个结果?

[英]How can I get more than 1000 results from a Parse query?

我一直在努力使成功没有成功。 初始查询后,我尝试计算结果。 然后,我检查结果是否等于查询的限制。 如果它们相同,则创建一个新查询并重复。

但是,我得到的只是第一个查询的结果。

代码在这里:

  var allObjects = [PFObject]()

    var skip = 0
    var limit = 10

    var downloadCards = PFQuery(className: "Checklist")
    downloadCards.whereKey("createdBy", equalTo:PFUser.currentUser()!)
    downloadCards.includeKey("card")
    downloadCards.orderByAscending("IndexNumber")
    downloadCards.limit = limit
    downloadCards.skip = skip
    downloadCards.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {

            if let objects = objects as? [PFObject] {
                for object in objects {
                    if let card = object["card"] as? PFObject {
                        allObjects.append(card)
                    }
                }
            }

//1000
                if objects!.count == limit {
                    //Query again until results aren't equal to limit
                    skip = skip + limit
                    var downloadCards2 = PFQuery(className: "Checklist")
                    downloadCards2.whereKey("createdBy", equalTo:PFUser.currentUser()!)
                    downloadCards2.includeKey("card")
                    downloadCards2.orderByAscending("IndexNumber")
                    downloadCards2.limit = limit
                    downloadCards2.skip = skip
                    downloadCards2.findObjectsInBackgroundWithBlock {
                        (objects: [AnyObject]?, error: NSError?) -> Void in
                        if error == nil {

                            if let objects = objects as? [PFObject] {
                                for object in objects {
                                    if let card = object["card"] as? PFObject {
                                        allObjects.append(card)
                                    }
                                }
                            }

您可以将“ skip”变量设置为1,000、2,000等,因为您可以获得多达10,000次跳过的更多结果。 之后,您可以按照以下说明进行操作: https : //parse.com/questions/paging-through-more-than-10000-results

编辑:

抱歉-我可能误解了您的问题。

1)您应该将第二个循环中的变量重命名为object2,error2,card2等,类似于downloadCards2。

2)或者,为了使代码可扩展和DRY,我将使allObjects,skip和limit属性并简单地再次运行相同的查询。

func runQuery() {
    var downloadCards = PFQuery(className: "Checklist")
    downloadCards.whereKey("createdBy", equalTo:PFUser.currentUser()!)
    downloadCards.includeKey("card")
    downloadCards.orderByAscending("IndexNumber")
    downloadCards.limit = limit
    downloadCards.skip = skip
    downloadCards.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {

            if let objects = objects as? [PFObject] {
                for object in objects {
                    if let card = object["card"] as? PFObject {
                        allObjects.append(card)
                    }
                }
            }

            if objects!.count == limit {
                 skip = skip + limit
                 self.runQuery()
            }
       }    
    }  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM