我正在尝试查询要删除的具有特定ID的一类对象。但是,当我运行它时,出现“此查询具有出色的网络连接。您必须等待完成” 的错误。我认为这是因为我在尝试访问对象时仍试图删除它。
我在闭包中提供了删除代码,因为我假设闭包语句仅在函数调用完成后才执行,但是仍然给我错误。我也尝试过使用DispatchGroups,因为它看起来确实是一个并发问题,但是我对它们的用法还不太熟悉。这是我的代码:
let idList = [...] // Some list of ID's I would like to remove
let query = PFQuery(className: "Pictures")
for id in idList {
query.getObjectInBackground(withId: id) { (object: PFObject?, error:
Error?) in
if error == nil {
img?.deleteInBackground() { (success, error: Error?) ...
}
}
我希望与我的原始IdList中的ID相关联的每个对象都将从“解析”后端中删除。但是,似乎getObjectInbackground()和deleteInBackground()发生冲突。如果有人可以提供一些建议,那就太好了!
答案 0 :(得分:0)
您可以尝试
var idList = [...]
func delete(_ id:Int) {
query.getObjectInBackground(withId: id) { (object: PFObject?, error: Error?) in
if error == nil {
img?.deleteInBackground() { (success, error: Error?) ...
}
idList = Array(idList.dropFirst())
if !idList.isEmpty {
delete(idList.first!)
}
}
}
最初称呼它
delete(idList.first!)