我正在创建一个当前将解析对象保存到本地数据存储区和parse.com的应用程序。然后我运行一个查询,将每个对象保存到一个数组中,以便我可以在表视图中显示它。由于我过去发布的问题here和here,所以到目前为止的一切都很有效。
所以现在信息正如我所希望的那样正确显示。但现在,我希望能够删除这些条目。我想滑动表格,当点击删除时,该对象将从本地数据存储区取消固定,同样的项目也会从云中删除。
这是我目前的代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// var lighthouse = self.lighthouses[indexPath.row]
var data = self.arrayToPopulateCells[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("locationCell") as! lighthouseCell
let row = indexPath.row
cell.cellName.text = data.name
cell.cellPlace.text = data.locality
cell.cellDate.text = "\(data.date)"
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedLighthouse = self.arrayToPopulateCells[indexPath.row]
self.performSegueWithIdentifier("lighthouseDetailViewSegue", sender: self)
}
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
self.arrayToPopulateCells.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
其中" arrayToPopulateCells"是我在查询期间存储解析对象的地方。
显然我能够在indexpath.row中删除单元格,但是如何获取该单元格中的信息,并找到匹配的解析对象来取消固定和删除?
答案 0 :(得分:0)
使用此委托你可以获得lighthouseCell的参考,并使用它可以得到变量和
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
var selectedCell = tableView.cellForRowAtIndexPath(indexPath) as lighthouseCell
gameScore.removeObjectForKey("playerName")
self.arrayToPopulateCells.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
使用selectedCell然后
selectedCell.data.removeObjectForKey("keyName")
对于删除解析数据,我们有Delete Object for particular key
答案 1 :(得分:0)
假设数组中的对象是实际的PFObject
个实例,那么只需在从数据数组中删除它们之前调用deleteInBackground
。
所以:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
self.arrayToPopulateCells[indexPath.row].deleteInBackground() // Delete from cloud
self.arrayToPopulateCells.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}