我的表视图是从包含核心数据中的数据的数组中填充的,我想在相应更新核心数据时删除行,这是我的删除代码。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source.
NSManagedObject *selectedObject = [arrayList objectAtIndex:[indexPath row]];
[managedObjectContext deleteObject:selectedObject];
[arrayList removeObjectAtIndex:[indexPath row]];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
但是,当我点击删除按钮时出现以下错误:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:995
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'
我的数据源是arrayList
,包含从核心数据中提取的NSManagedObjects。
想法?提前谢谢!
更新
现在删除可以在我删除arrayList中的数据后工作,但核心数据中的数据没有相应删除,当app重新启动时,列表仍然是相同的。
答案 0 :(得分:0)
这意味着即使删除了行,数据源仍然会返回4作为第0部分中的行数。所以现在表视图只显示了3行,应该有4个。
根据您的说明,您可能需要从arrayList
删除该对象,并将其从CoreData
中删除。或者,在从arrayList
删除对象后重新加载CoreData
,然后删除该行。