iOS从Tableview中删除行而不删除Core Data

时间:2015-02-18 04:38:23

标签: ios objective-c uitableview core-data

我在View Controller中嵌入了一个填充了核心数据结果的tableview。显示的核心数据可通过选择行进行编辑,并与其他核心数据实体相关。

我想从tableview 中删除一行而不删除对象

看起来相当直接,但似乎没有任何明显的答案。

我尝试使用第二个谓词[NSPredicate predicateWithFormat: @"shouldDisplay = YES"]; BOOL,当我想要删除的对象的值更改为NO- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath但是这会导致错误,因为shouldDisplay不是有效的密钥路径(我以前从未遇到过这个问题)。我从 question 中得到了这个建议,这是我在堆栈上找到的唯一相关链接。

是否有一种简单的方法可以从表中删除行,是不是只是排除表中的数据或实际删除行,而不是永久删除相应的数据?

修改

这是我读过的最常见的建议:

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade];

这对我杀死应用程序不起作用并给出了这个理由:

  

由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'无效更新:第0部分中的行数无效。更新后现有部分中包含的行数(1)必须等于更新前的该部分中包含的行数(1),加上或减去从该部分插入或删除的行数(0插入,1删除)和加或减移入的行数或超出该部分(0移入,0移出)。

更新

要查看我的填写表格视图的代码以及有效/无效的代码,请参阅 PASTE BIN LINK 。我没有使用数组填充。

确认

我试图在谓词中使用BOOL,而没有BOOL" shouldDisplay"在我的实体属性中。通过在属性中搜索类中声明的内容,谓词无法工作。这是一个菜鸟错误。

2 个答案:

答案 0 :(得分:0)

如果您只想删除下面的单元格使用。

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade];

如果您也想删除对象,请添加以下语句。

[yourObjectArray removeObjectAtIndex:indexPath.row];

注意:

如果重新加载表,删除该行后,您将再次看到该行,因为您没有从阵列中删除该特定对象。

答案 1 :(得分:0)

我在core data数组中提取了NSManagedObject,我也遇到了同样的问题。

  

问题是。

我从tableview中删除了行,然后才从NSManagedObject数组中删除。

所以试试吧

首先从您的数组中删除我使用了NSManagedObject所以我使用了

[mydata removeAtIndex:indexPath.row]

然后使用deleteRowAtIndexPath方法

从tableview中删除行
  

commitEditingStyle方法