使用 NSFetchedResultsController 的子实体到父实体的谓词

Posted

技术标签:

【中文标题】使用 NSFetchedResultsController 的子实体到父实体的谓词【英文标题】:Predicate for Child to parent entity using NSFetchResultController 【发布时间】:2017-10-19 10:22:39 【问题描述】:

我有两个实体 ABAB 具有一对多关系。现在我想使用NSFetchResultController 获取实体 B。如果实体A 有多个B,我应该在获取时只得到一个B。有人可以告诉我如何使用谓词进行此提取吗?提前致谢。

【问题讨论】:

你能解释一下你的要求吗?您是否需要使用 FRC 而不是直接提取?如果是这样,为什么?为什么每个 A 只需要一个 B?如果给定的 A 有多个 B,您希望包括哪个 B? 我必须使用 FRC。如果给定 A 有多个 B,则将包括具有最新创建日期(属性)的 B。 您是否需要 FRC 来提供部分(即您是否使用 sectionNameKeyPath)? 【参考方案1】:

您无法使用 FRC 执行此操作。即使您可以,当模型更改时它也不会正确发出更新通知,所以无论如何都是没有意义的。

所以你要么必须

a) 手动获取、过滤和排序以获取您的源数据。你可以观察NSManagedObjectContextObjectsDidChangeNotification知道什么时候刷新。

b) 将此信息缓存到一个单独的属性中,以便 FRC 可以访问它。即B需要独立知道是否应该显示。

【讨论】:

以上是关于使用 NSFetchedResultsController 的子实体到父实体的谓词的主要内容,如果未能解决你的问题,请参考以下文章

核心数据保存竞争条件错误

在 Swift 3 中难以配置 NSFetchedResultsController

为啥 beginUpdates/endUpdates 会重置表视图位置以及如何阻止它这样做?

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?