swift中的错误当我删除一行时,它会执行但崩溃

时间:2016-01-19 06:08:41

标签: swift crash

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
        // Delete the row from the data source
    let object: PFObject = self.noteObjects.objectAtIndex(indexPath.row) as! PFObject
    object.delete() 
  

当我决定使用删除时,它有效,但应用程序崩溃了

tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
} else if editingStyle == .Insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
  

这是错误 *断言失败 - [UITableView _endCellAnimationsWithContext:],/ BuildRoot / Library / Cache / com.apple.xbs / Source / UIKit_Sim / UIKit-3512.30.14 / UITableView.m:1720   2016-01-19 00:07:30.451 Registro1 [21154:852511] *

2 个答案:

答案 0 :(得分:2)

从您的代码中,您似乎没有从数据源数组noteObjects中删除相应的对象。因此,在调用deleteRowsAtIndexPaths

之后,数据源数组计数与TableView内部计数之间存在不匹配

在致电tableView.deleteRowsAtIndexPaths

之前,请尝试添加以下行
self.noteObjects.removeAtIndex(indexPath.row)

答案 1 :(得分:0)

UITableView删除任何行后,您需要致电reloadData(),或者您可以将该方法与beginUpdatesendUpdates()联系起来。

  

示例:

tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
tableView.endUpdates()

希望这有帮助!