我有一个UITableView,它从FetchedResultsController获取一个Core Data对象数组。 我希望能够使用标准删除按钮从表视图中删除一个对象,并让tableview单元格像删除项目时一样淡出,但在我的情况下我不是实际上删除对象但将其标记为已删除。例如/我有一个名为deleted的属性,因此它仍然存在,但似乎已删除;
obj.deleted = [NSNumber numberWithBool:YES];
有没有这样做的方法,所以它似乎仍然按标准删除工作?
我似乎无法在不调用[self.tableView reloadData]
的情况下这样做,所以我放弃了标准删除带来的漂亮动画。
我的tableView获取结果控制器有一个过滤器,因此tableView中的数据被过滤;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"deleted == %@", [NSNumber numberWithBool:NO];
怀疑我需要的代码会在这里;
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
//
}
}
答案 0 :(得分:2)
NSManagedObject
已有方法isDeleted
,因此自定义属性deleted
可能会干扰该方法。您可以向实体添加属性invisible
并检查
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"invisible == %@", [NSNumber numberWithBool:NO];
在获取的结果控制器中。如果你设置
obj.invisible = [NSNumber numberWithBool:YES];
应该从表视图中删除该对象。 (您可能需要保存上下文,我现在不是100%确定。)