0

我有一个 Xcode 项目,在核心数据(“项目”)中有一个实体,并建立了自反关系,以便每个项目都可以与许多其他项目建立关系。我已经根据文档建立了关系(两个关系,或者一个与自身相反的关系是合法的,我正在使用后者)并且一切都很好,直到我去删除一个有关系的项目另一个项目。如果我为关系选择“级联”删除规则,则不会发生崩溃,并且所有功能都按预期运行。但是,如果我使用的是“无效”删除规则,即我真正想使用的删除规则,我会崩溃。

我假设即使我使用的是自反关系,但在删除项目时,Core Data 正在处理并将所有关系的另一端对该项目的所有引用设置为空。还是我必须手动进入并执行此操作?我想我不应该这样做。

或者可能是 FetchedResultsController 的“操作顺序”问题?

我对这个完全没有想法。由于过去几周苹果公司的问题,我无法从他们那里获得支持。

我没有发布代码,因为它有很多,而且大部分都是模板/样板代码,无论如何,对于我正在构建的这个简单的测试示例。

4

1 回答 1

0

更新:

经过更多的测试和记录,Core Data 和删除规则都不是问题。在删除对象后,“Nullify”的工作方式与该对象可能具有的任何关系完全一样。问题出在获取的结果控制器中。

必须在某处对该未释放的对象进行引用。建立关系时除外。它与关系有关,因为如果没有关系,对象总是会毫无问题地删除。

使用异常断点,它会在 configureCell: 尝试访问特定索引路径处的 fetchedResultsController 对象时中断。

NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];

没有异常断点,我得到错误:

CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是 NSManagedObjectContextObjectsDidChangeNotification 观察者中的一个错误。 * -[_PFBatchFaultingArray objectAtIndex:]: 索引 (3) 越界 (3) 与 userInfo (null)

如果我注释掉 configureCell 中的所有代码:单元格将无法正确显示,但我无法让它崩溃。一切都很完美。

叹。

于 2013-08-09T04:45:55.103 回答