我在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
"在我的实体属性中。通过在属性中搜索类中声明的内容,谓词无法工作。这是一个菜鸟错误。
答案 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
方法
在
中commitEditingStyle
方法