iOS/coredata/swipe to delete:为什么下面的代码不起作用?

iOS/coredata/swipe to delete:为什么下面的代码不起作用?,ios,core-data,swipe-gesture,Ios,Core Data,Swipe Gesture,我正在尝试使用下面的代码让swipetore处理核心数据,但它不起作用。我意识到,当只需要一种方法时,有两种方法可供遵循,但无论如何我都无法让它发挥作用。如果有人能找出问题所在,我将不胜感激。提前感谢您的建议 //enables swipe to delete - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowA

我正在尝试使用下面的代码让swipetore处理核心数据,但它不起作用。我意识到,当只需要一种方法时,有两种方法可供遵循,但无论如何我都无法让它发挥作用。如果有人能找出问题所在,我将不胜感激。提前感谢您的建议

    //enables swipe to delete
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Remove the row from data model
 //first approach       
        if (editingStyle == UITableViewCellEditingStyleDelete) {
            // Delete object from manageobjectcontext
            NSLog(@"should be deleting here");//this shows in log
            [self.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];

            NSError *error = nil;
            if (![self.managedObjectContext save:&error]) {
                // handle error
            }
        }
    //second approach
        // Delete the item
        Items *itemToDelete = [self.fetchedResultsController objectAtIndexPath:indexPath];
        NSLog(@"Deleting (%@)", itemToDelete.name);//this also shows in log
        [self.managedObjectContext deleteObject:itemToDelete];

        [[self tableView] reloadData];

    }

你的两种方法做完全相同的事情(唯一的区别是演员阵容),所以这对你没有帮助

首选方法是实现
NSFetchedResultsController
委托。从上下文中删除对象时,将调用委托方法
controller:didChangeObject:…
。标准实现(Xcode模板:Master Detail,check Core Data)只需按预期删除行(通过
deleteRowsAtIndexPaths:


如果不使用委托方法(不推荐),则必须在
committeeditingstyle
中自己调用
deleteRowsAtIndexPaths

哪一部分不起作用?未删除对象或未更新表?两者都没有。该表没有反映出之后的任何变化。当您关闭模拟器并重新打开时,该项仍然存在,因此它显然仍然位于底层数据库(sqllite)中保存上下文时是否有错误?没有。只是没有被删除。它似乎在NS日志输出中获得了正确的行。我实现nsfetchedresultscontrollerdelegate的方式肯定有问题,因为它不起作用。(我的头文件中确实有NSFetchedResultsControllerDelegate。)我将尝试从master detail复制代码,看看这是否能解决问题。