使用核心数据获取请求/谓词创建实体父项列表

时间:2010-10-12 05:21:41

标签: iphone cocoa core-data

我有一个核心数据模型,使用数据库存储,包含具有经典父/子关系的实体。每个父级都有多个子级,每个子级都是一个父级,创建一个多级层次结构。

我想要做的是在获取请求中使用谓词来返回给定实体和根之间的所有实体的列表。

如果我在代码中执行此操作,我会在“父”链上工作,直到我点击根实体,但我想在谓词中执行此操作,以便搜索保留在“数据库”中。这将是搜索的一部分,因此需要相对较快。

这可能吗?

2 个答案:

答案 0 :(得分:2)

谓词是在关系图中硬连线以横向未知数量的对象。你必须具体地告诉它要遍历的实体和关系。你不能说,“在你达到零之前一直走过某种关系。”

过早优化是万恶之源。我不担心在活动对象中遍历关系的速度。核心数据比你预期的要快得多。在这种情况下进行优化,设置为获取故障,因此没有数据只加载关系,我认为你不会有速度问题。

顺便说一下,看看你的命名法,实体是管理对象,因为类是实例。实体是具体的抽象,管理对象。实体仅是数据模型的属性。例如,在这种情况下,数据模型中可能只有一个自引用实体,可用于创建数百万个托管对象的图形。

您可以找到父实体,就像您找到超类一样,但实际上并不是您所询问的内容。

答案 1 :(得分:0)

我不认为可以使用父/子关系在一次往返中完成此操作。然而,还有其他方法。如果您关注性能(并且已经对其进行了测量以验证这实际上是您的平均数据集的问题),您可能会发现这有用:Storing Hierarchical Data in a Database