使用谓词在 Core Data 中获取父母的所有孩子
Posted
技术标签:
【中文标题】使用谓词在 Core Data 中获取父母的所有孩子【英文标题】:Fetch all children of parents in Core Data using predicate 【发布时间】:2017-08-29 08:03:27 【问题描述】:我在 Core Data 中有一个 Person - Children 的数据模型关系。 例如,一个人可以有孩子,他的孩子可以有孩子,所以他孩子的孩子可以有孩子,等等。
如何使用谓词获取所有的孩子、孙子和孙子?
【问题讨论】:
一个孩子可以只有一个父母,还是多个? 孩子只能有 1 个父母。Child
和 Person
是不同的实体吗?还是children
是从Person
到Person
的自反关系?
@pbasdf 它们只是同一个实体并且是自反的。
@LittleTinyDev 你有解决方案吗?
【参考方案1】:
如果您有一个 Person 对象 thePerson
,那么要获取他们的孩子,您将使用以下谓词:
NSPredicate(format:"parent == %@", thePerson)
要获取他们的孙子,请使用:
NSPredicate(format:"parent.parent == %@", thePerson)
对于他们的曾孙,请使用:
NSPredicate(format:"parent.parent.parent == %@", thePerson)
将它们组合在一起:
NSPredicate(format:"parent == %@ OR parent.parent == %@ OR parent.parent.parent == %@", thePerson, thePerson, thePerson)
【讨论】:
感谢您的回答。如果我在我的问题中使用了“固定”示例,请原谅我。但是,如果我不知道获得最外层孩子的级别数怎么办。 我担心你可能想要那个。我认为您可能需要更改模型 - 但我必须考虑如何最好地更改它。以上是关于使用谓词在 Core Data 中获取父母的所有孩子的主要内容,如果未能解决你的问题,请参考以下文章