我正在使用editActionsForRowAtIndexPath函数,所以当我在单元格上滑动时,我想从Parse和表中删除该对象。我有一个查询,我相信我正在使用" wherekey"不正确。任何人都可以帮我弄清楚我需要比较什么,所以我可以删除该对象。我的代码如下......
let query = PFQuery(className: "Events")
query.whereKey("objectId", equalTo: (PFObject).self)
query.findObjectsInBackgroundWithBlock({ (objects : [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
object.deleteInBackground()
print("event deleted")
}
}
})
// Refresh tableview
self.tableView.reloadData()
答案 0 :(得分:0)
您似乎正在做正确的过程。从我的观点来看,问题可能是其中任何一个。
self.tableView.reloadData()
应在行object.deleteInBackground()
之后执行,因为此方法调用需要几个部分才能完成。因此,通过将tableView.reloadData()
置于循环内部或仅在for循环括号外部,将确保在deleteInBackground()
完成后执行它。(PFObject).self
可能是nil if let object == [PFObject]?
以确保您检索的对象不是nil 修改强>
我忽略了你试图通过objectId过滤查询的事实,因为objectId是唯一的,所以它总是会返回一个对象。因此,您应该使用方法
query.getObjectInBackgroundWithId(theObjectId) {
(objectName: PFObject?, error: NSError?) -> Void in
if error == nil && objectName != nil {
//delete object here
} else {
print(error)
}
}
这意味着您只需要创建查询,而不需要whereKey方法。
请参阅解析文档以获取对象here