Ios 无法删除行/核心数据

Ios 无法删除行/核心数据,ios,objective-c,core-data,Ios,Objective C,Core Data,在我的应用程序中,我有一个带有mapkit值的表视图。我可以编辑表格,删除行,但当应用程序重新启动时,相同的删除行仍然存在…我如何修复此问题?用于编辑的代码: - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle ==

在我的应用程序中,我有一个带有mapkit值的表视图。我可以编辑表格,删除行,但当应用程序重新启动时,相同的删除行仍然存在…我如何修复此问题?用于编辑的代码:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
 if (editingStyle == UITableViewCellEditingStyleDelete) {

     [_locations removeObjectAtIndex:[indexPath row]];

     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

     [tableView reloadData];
 }
有什么建议吗?多谢各位

  • 使用
    NSFetchedResultsController
    从核心数据加载数据
  • 实现委托功能,以便在发生更改时更新视图
  • 当您删除某个内容时,删除将一个块排队,以便将其从核心数据中删除。(如果您使用的是
    NSPersistentContainer
    请使用
    performBackgroundTask:
  • 不要更新视图。这将自动发生,因为您在步骤2中实现了委托回调

  • 您不能在
    deleteRowsAtIndexPaths
    之后调用
    reloadData
    ,但必须同时删除核心数据堆栈中的对象并保存上下文。可能您没有从数据库中删除对象。使用[NSManagedObjectContext deleteObject:]然后保存它。所有这些我都必须在编辑表方法中实现?调用
    performBackgroundTask(\u:)的传入私有
    context
    不会导致
    NSFetchedResultsController
    更新:在核心数据设置中:
    self.persistentContainer.viewContext.automaticallyMergesChangesFromParent=YES当然,但默认情况下它是
    ,因此
    save()
    既不会更新
    viewContext
    也不会通知
    NSFetchedResultsController
    。我只是觉得这应该加在你的答案上。