1

我将 ECSlidingViewController 用于 Path & FB 样式的 UI。两个 UITableView,一个(细节)显示为主视图,第二个(主视图)显示为侧菜单。两者均由 Core Data 提供支持。

在侧面菜单 UITableView 中删除父表行时,我遇到了严重的崩溃,但只有当详细信息页面在删除时显示父行的子行时。所有其他行都按预期删除。

删除行由以下方式处理:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
    }
}

我在日志中收到以下错误:

CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是 NSManagedObjectContextObjectsDidChangeNotification 观察者中的一个错误。无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (0) 必须等于更新前该节中包含的行数 (3),加上或减去数字从该部分插入或删除的行数(0 插入,1 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。与用户信息(空)

delete rule如果有帮助,设置为 Nullify ?

我猜核心数据是从 NSFetchedResultsController 中一次性删除所有的孩子,然后 UITableVIew 变得很困惑?

如何在不崩溃的情况下删除父子 NSManagedObjects?

4

1 回答 1

0

多次查看代码后,发现我已经嵌套[self.tableView beginUpdates]并且[self.tableView endUpdates]不同步,并且我连续两次调用 endUpdates。

我现在开发这个应用程序已经打了很多次了。如果您遇到这样的崩溃检查,并且您可能正在使用 CS193P 课程中的 CoreDataTableViewController,请检查您对 beging 的使用并结束更新!

于 2013-05-14T08:07:24.543 回答