从数据库中删除记录

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];

您从未删除数据库中的对象。

【讨论】:

以上是关于从数据库中删除记录的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 从数据库中删除单个记录

从数据库中删除记录的Ajax脚本不工作。

如何从mysql数据库中永久删除记录

从共享记录中删除自己

从核心数据中删除记录不起作用?

Bigquery如何从数据流中删除记录