应用程序崩溃当在同一行上使用“滑动删除”功能两次时

时间:2015-04-01 09:15:31

标签: ios swift

我在这个View Controller中有一个UITableView。当我运行应用程序并使用滑动删除功能(比如第3行)时,它会在第一次完美地删除该行。如果我将新数据添加到同一行(第3行),并再次执行滑动删除操作,应用程序崩溃,并给我一个EXC_BAD_ACCESS错误。这是我的代码的一部分:

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){

    if editingStyle == UITableViewCellEditingStyle.Delete {
        toDoList.removeObjectAtIndex(indexPath.row)
        feedTimes = feedTimes - 1
        ft.text = "\(toDoList.count)"
        tableView.reloadData()
    }
}

任何人都可以解释为什么会这样吗? 谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

似乎您的更新值不正确。反复检查。 顺便说一句,在这种情况下,而不是reloadData使用:

performBatchUpdates {
    deleteRowsAtIndexPaths
    // or
    deleteSections
}

相对于你的表结构

答案 1 :(得分:1)

Apple在Inserting and Deleting Rows and Sections文件中建议:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// If row is deleted, remove it from the list.
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate];
        [controller removeObjectFromListAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

我曾经成功使用过这种方法。