使用 NSFetchedResultsController 的子实体到父实体的谓词
Posted
技术标签:
【中文标题】使用 NSFetchedResultsController 的子实体到父实体的谓词【英文标题】:Predicate for Child to parent entity using NSFetchResultController 【发布时间】:2017-10-19 10:22:39 【问题描述】:我有两个实体 A
和 B
。 A
与 B
具有一对多关系。现在我想使用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