Core Data to-many关系导致获取结果控制器崩溃

时间:2015-07-27 09:04:46

标签: swift core-data nsfetchedresultscontroller

我有一个问题模型对象,它与该问题的尝试有很多关系。

我正在使用Fetched Results Controller列出问题。当我点击表格视图中的问题时,它会加载带有问题的详细信息视图。

当提交答案时,我想对问题对象进行另一次尝试,以便我有尝试的历史记录。

这是事情变得奇怪的地方。提交答案时屏幕上没有表格视图,但目前我定义了尝试与问题之间的关系(即attempt.question = currentQuestion),这会导致基础获取结果控制器崩溃。

似乎是两次调用frc委托方法controller:didChangeContent:atIndexPath:forChangeType:newIndexPath:,第一次用于更新(这是有意义的,因为问题对象已经改变),但第二次用于插入(这是没有意义的,因为没有删除或插入任何问题对象。)

获取的结果控制器的获取请求仅查询问题对象,并且对该问题的尝试不感兴趣。

无论尝试是有序的还是无序的多对关系,只有在设备上,而不是在模拟器上,才会发生这种情况。

我很感激任何帮助,弄清楚为什么会发生这种情况。

1 个答案:

答案 0 :(得分:0)

感谢Martin R,他指出我this solution

出于某种原因,即使在我的情况下,它是.Insert事件而不是链接问题中的.Move事件,对委托的调用仍然使用相同的索引填充newIndexPath参数path作为atIndexPath参数。

在允许表视图插入行之前对这两个参数执行不等式检查可以解决问题,因为这两个对象是相同的:

(lldb) po indexPath
▿ Optional(<NSIndexPath: 0xc000000000008016> {length = 2, path = 0 - 1})

(lldb) po newIndexPath
▿ Optional(<NSIndexPath: 0xc000000000008016> {length = 2, path = 0 - 1})