【问题标题】:Delete Rules with Reflexive Relationship删除具有自反关系的规则
【发布时间】:2015-08-25 23:06:02
【问题描述】:

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

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

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

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

我没有发布代码,因为其中有很多,而且大部分都是模板/样板代码,反正我正在构建这个简单的测试示例。

【问题讨论】:

  • 你在自反关系中有一个循环吗?
  • 感谢您的回复。不,没有使用我的关系的循环。

标签: ios core-data rule


【解决方案1】:

更新:

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

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

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

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

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

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

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

叹息。

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2022-07-22
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多