【发布时间】:2013-05-12 17:36:28
【问题描述】:
我将 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 移出)。与 userInfo (null)
delete rule 设置为 Nullify 是否有帮助?
我猜 Core Data 会一次性从 NSFetchedResultsController 中删除所有子项,然后 UITableVIew 会变得混乱吗?
如何在不崩溃的情况下删除父子 NSManagedObjects?
【问题讨论】:
-
删除对象后,执行新的抓取并重新加载数据。您也可以为此使用 NSFetchResultsControllerDelegate。希望对您有所帮助。
-
我无法在没有崩溃的情况下删除对象。单个项目删除工作正常。我不明白为什么它试图一次删除所有子项。
标签: uitableview core-data nsmanagedobject nsfetchedresultscontroller