代码之家  ›  专栏  ›  技术社区  ›  ed94133

删除CoreData对象,然后调用[tableView reloadData]会导致SIGABRT

  •  1
  • ed94133  · 技术社区  · 14 年前

    我支持删除包含tableView的UIView中的行:

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
        if (editingStyle == UITableViewCellEditingStyleDelete) {
      [self.fetchedResultsController.managedObjectContext
                deleteObject:[self.fetchedResultsController
                objectAtIndexPath:indexPath]];
      NSError *error;
      if (![[self.fetchedResultsController managedObjectContext] save:&error]) {
       NSLog(@"Unresolved error %@, %@, %@", error, [error userInfo],
                        [error localizedDescription]);
      }
      else {NSLog(@"Apparently successful");}
      [self.tableView reloadData];
     }
    }
    

    当我尝试这样做时,我在控制台中得到“显然成功”的消息,但是在configureCell中得到一个SIGABRT。就好像某个地方的对象还没有被删除,而configureCell正试图呈现一个丢失的对象。(不过,当我重新运行应用程序时,记录就消失了。)

    有什么想法吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Stefan Arentz    14 年前

    [self.tableView reloadData] 当使用 NSFetchedResultsController .

    NSFetchedResultsControllerDelegate

    基于导航的应用程序 使用核心数据进行存储 复选框。你将得到一个空的项目,它能正确地完成所有这些。这将是一个很好的例子。