1

我有一个令人沮丧的问题,我一直在努力了很长一段时间。更新NSManagedObject导致NSFetchedResultsController删除

提供一些上下文和细节我有一个iOS UISplitViewController应用程序 - 标准的主/细节的东西。主视图是一个由NSFetchedResultsController(从SQLite数据存储加载NSManagedObjects)支持的UITableView。

似乎在发生的事情是,细节视图中的任何更新(可以定期更新“主记录”并刷新到NSManagedObject并最终导致SQL数据存储)会在NSFetchedResultsController上执行DELETE操作。

我认为这是因为写入NSManagedObject属性导致某种错误,这反过来导致NSFetchedResultsController从它的缓存结果集中删除它。最终结果是记录从主视图中'丢失'(例如:UITableCellView从主UITableView中删除)。

的问题是,我不希望这样的事情发生,我不知道如何阻止它......

有没有人遇到过这个问题之前,并可能提供一些指导?

由于提前, 本

回答

0

我不知道这是否回答你的问题,但我想通了,解决我有一个类似的问题。我用每个对象名称的第一个字母对我的Core Data支持的UITableView中的对象进行排序。在我阅读的任何教程中,它告诉我将一个临时属性'NameInitial'放在NSManagedObject子类中,我将用该对象的名称的第一个字母填充。然后,我使用该属性作为我的sectionNameKeyPath将对象排序到我的UITableView中的适当部分。

我在每个单元格上都有一个按钮,它更新了与该单元格关联的对象的属性,并且在我的didChangeObject委托函数中正确接收了NSFetchedResultsChangeUpdate消息。但是,有时,单元格会被删除,我会收到NSFetchedResultsChangeDelete消息,没有明显的原因。

然后我注意到被删除的单元有(null)作为其关联对象的NameInitial属性。我忘记了暂时的NameInitial只存储在内存中,所以不一定保持一直。每次更新单元格后,手动重新填充NameInitial属性后,删除操作就会停止。所以,如果你使用瞬态属性来帮助排序/分割你的UITableView,这可能是你的问题。

希望这会有所帮助,祝你好运! -Rick

相关问题