![](/img/trans.png)
[英]Social network on Parse having more than 1000 followers. How to get latest posts for all?
[英]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.