一对多关系上的 NSFetchedResultsController
Posted
技术标签:
【中文标题】一对多关系上的 NSFetchedResultsController【英文标题】:NSFetchedResultsController on a one-to-many relationship 【发布时间】:2014-05-26 04:19:28 【问题描述】:我正在实现NSIncrementalStore
,我需要执行分页获取并维护请求中元素的顺序,然后在表格中显示结果并维护与查询关联的NSFetchedResultsController
。
我会尝试用一个例子更好地解释我自己
我有两个实体,Entity1 和 Entity2。 Entity1 与 Entity2 具有一对多的关系,并且由于 fetch 意味着太多的对象,我想要执行分页请求。我需要维护从服务器到达的对象的顺序,以便将对象存储在NSOrderSet
中。 Entity2 和 Entity1 之间没有反比关系。
我遇到的问题是在这种情况下我不知道如何实例化NSFetchRequest
。
我已经阅读了使用 setRelationshipKeyPathsForPrefetching
的预取关系,但在我阅读的所有示例中,NSFetchRequest
都以 Entity1 作为实体 ([fetchRequest setEntity:[Entity1 class]]
) 进行了实例化。我需要一组 Entity2 对象。
另一个想法是使用获取的属性,但由于我不能(而且我不想)对请求执行排序,所以我放弃了它。
我希望我很清楚,并提前感谢 Marcus Zarra 鼓励我提出这个问题。
非常感谢。
【问题讨论】:
【参考方案1】:首先,您需要一个反向关系。 Core Data 确实应该要求它们,而不仅仅是警告。有了逆,这个问题就变得简单了。如果没有逆,那几乎是不可能的。
假设你添加了逆(你应该:)然后你设置你的NSFetchRequest
反对Entity2的谓词“entity1 == %@”,你会得到你的结果。从那里你可以调整NSFetchRequest
来处理分页。
【讨论】:
这太棒了!非常感谢!以上是关于一对多关系上的 NSFetchedResultsController的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我在 grails 上删除一对多关系上的父级时,会在子级上调用 beforeInsert 事件?
排除某些对象的一对多关系上的 NSFetchRequest 无法按预期工作