使用editActionsForRowAtIndexPath删除解析对象

时间:2015-12-29 21:55:05

标签: swift parse-platform

我正在使用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()

1 个答案:

答案 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