删除父tablerow时核心数据崩溃

时间:2013-05-12 17:36:29

标签: uitableview core-data nsmanagedobject nsfetchedresultscontroller

我正在使用ECSlidingViewController作为Path& FB风格的UI。两个UITableViews,一个(细节)显示为主视图,第二个(主)显示为侧面菜单。两者均由Core Data提供支持。

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

删除行由以下方式处理:

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

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

  

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

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

我猜测Core Data正在从NSFetchedResultsController一次性删除所有的孩子,然后UITableVIew变得困惑了吗?

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

1 个答案:

答案 0 :(得分:0)

经过多次代码后,事实证明我嵌套[self.tableView beginUpdates][self.tableView endUpdates]已经不同步,我连续两次调用endUpdates。

我已经多次尝试开发此应用。如果您遇到类似这种检查的崩溃,并且您可能正在使用CS193P课程中的CoreDataTableViewController,请检查您对beging和end updates的使用!