0

我有一个 UITableView,它从 FetchedResultsController 获取一组核心数据对象。我希望能够使用标准删除按钮从表视图中删除一个对象,并让表视图单元格像删除项目时通常那样淡出,但是在我的情况下,我实际上并没有删除该对象,而是将其标记为删除。例如/我有一个名为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) {
        //
    }
}
4

1 回答 1

2

NSManagedObject已经有一个方法isDeleted,因此自定义属性deleted可能会干扰该方法。您可以向您的实体添加一个属性invisible并检查

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"invisible == %@", [NSNumber numberWithBool:NO];

在获取的结果控制器中。如果你设置

obj.invisible = [NSNumber numberWithBool:YES];

该对象应从表视图中删除。(您可能需要保存上下文,我现在还不能 100% 确定。)

于 2013-03-29T09:31:29.080 回答