我正在使用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?
答案 0 :(得分:0)
经过多次代码后,事实证明我嵌套[self.tableView beginUpdates]
和[self.tableView endUpdates]
已经不同步,我连续两次调用endUpdates。
我已经多次尝试开发此应用。如果您遇到类似这种检查的崩溃,并且您可能正在使用CS193P课程中的CoreDataTableViewController,请检查您对beging和end updates的使用!