gpt4 book ai didi

swift - 如何使用 Swift 检查 Parse.com 中的后台查询是否已完成

转载 作者:可可西里 更新时间:2023-11-01 01:00:43 24 4
gpt4 key购买 nike

我需要用从 Parse.com 检索到的不同用户的数据填充一个数组。使用 getFirstObject 显然不是一个好主意,但我不知道如何确定何时为每个用户获取了所有数据:

    myObjects = []
for user in users { // users is an array of PFUsers
let query = PFQuery(className: "MyClass")
query.whereKey("asdh74tbf", equalTo: user)

query.getFirstObjectInBackgroundWithBlock{ (object: PFObject!, error: NSError!) -> Void in
if let object = object {
self.myObjects.append(object)
} else {
// handle error
}
}
}

我想在检索到所有对象后执行self.tableView.reloadData()。如何做到这一点?

最佳答案

使用调度组。检查here在“等待队列任务组”中了解更多信息。

您还提到您想要获取每个用户的所有对象。因此,您可以使用 findObjectsInBackgroundWithBlock 方法代替 getFirstObject。该 block 返回解析的响应。所以结合这个和调度组你的代码看起来像这样

//create a new dispatch group
let group: dispatch_group_t = dispatch_group_create();
var myObjects = []
for user in users { // users is an array of PFUsers
let query = PFQuery(className: "MyClass")
query.whereKey("asdh74tbf", equalTo: user)

//enter the dispatch group
dispatch_group_enter(group);

query.findObjectsInBackgroundWithBlock{ (objects: NSArray!, error: NSError!) -> Void in
if let object = object {
self.myObjects.append(object)
} else {
// handle error
}

//leave the dispatch group
dispatch_group_leave(group);
}
}

//will be called when all the async operations entered in the group are finished.
dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
self.tableView.reloadData()
});

关于swift - 如何使用 Swift 检查 Parse.com 中的后台查询是否已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34744781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com