从数据库中删除记录
Posted
技术标签:
【中文标题】从数据库中删除记录【英文标题】:Delete record from database 【发布时间】:2013-08-30 14:58:16 【问题描述】:我尝试从 tableview 中删除一个单元格并从数据库中删除其关联记录,但未成功。这是我的代码:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
if (editingStyle == UITableViewCellEditingStyleDelete)
// Delete the row from the data source
[self.arr removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];
NSError *error = nil;
[self.context save:&error];
else if (editingStyle == UITableViewCellEditingStyleInsert)
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
[self.tableView reloadData];
欢迎提出任何建议。我已经尝试了一切,阅读了许多关于 SO 的类似问题,但仍然无法弄清楚。谢谢。
【问题讨论】:
你在使用核心数据吗? 您不会从数据库中删除任何内容。你所做的就是从数组中删除一个对象。另外,请勿在调用deleteRowsAtIndexPaths...
之后立即调用reloadData
。
错误是单元格被删除但不是对象...一旦我重新加载表格,单元格就会重新出现。 @Abdullah 是的
@pjv 一旦你真正从数据库中删除数据(在调用deleteRowsAtIndexPath:
之前,不需要调用reloadData
。实际上它会破坏行删除的动画。
【参考方案1】:
在删除数组调用中的对象之前:
NSManagedObject *eventToDelete = [matchedObjects objectAtIndex:indexPath.row];
[context deleteObject:eventToDelete];
【讨论】:
就是这样!非常感谢。 @pjv 正如我在对问题的评论中所说,您没有从数据库中删除数据。【参考方案2】:对于从表视图中删除行你写的是正确的,但在删除行之后不要在deleteRowsAtIndexPaths
之后调用ReloadData
....
[self.arr removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
您从未删除数据库中的对象。
【讨论】:
以上是关于从数据库中删除记录的主要内容,如果未能解决你的问题,请参考以下文章