【问题标题】:Update to NSManagedObject causes NSFetchedResultsController delete更新到 NSManagedObject 会导致 NSFetchedResultsController 删除
【发布时间】:2011-04-24 04:25:19
【问题描述】:

我有一个非常令人沮丧的问题,我已经苦苦挣扎了很长一段时间。

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

似乎正在发生的是,详细信息视图中的任何更新(通常会导致更新“主记录”并刷新到 NSManagedObject 并最终刷新到 SQL 数据存储)会导致 NSFetchedResultsController 上的 DELETE 操作。

我认为这是因为对 NSManagedObject 属性的写入导致某种错误,进而导致 NSFetchedResultsController 将其从缓存的结果集中删除。最终结果是记录从主视图中“丢失”(例如:UITableCellView 已从主 UITableView 中删除)。

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

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

提前致谢, 本

【问题讨论】:

    标签: ios ipad uisplitviewcontroller nsfetchedresultscontroller nsmanagedobject


    【解决方案1】:

    我不确定这是否能回答您的问题,但我找到了解决我遇到的类似问题的方法。我正在按每个对象名称的第一个字母对我的 Core Data 支持的 UITableView 中的对象进行排序。在我阅读的任何教程中,它都告诉我在 NSManagedObject 子类中放置一个瞬态属性“NameInitial”,我将使用该对象名称的第一个字母填充该属性。然后我使用该属性作为我的 sectionNameKeyPath 将对象分类到我的 UITableView 中的适当部分。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      相关资源
      最近更新 更多