核心数据联合查询等效

时间:2013-04-29 07:14:52

标签: iphone ios core-data

我想获得来自不同实体的数据联合。我有许多实体(不同类型的标签,例如位置,事件等),我想要一个表格视图的数据,显示“所有标签”(即所有标签实体的联合)。对于这种用例,如何使用Core Data进行获取请求?

我知道Core Data不是ORM,但如果我上面的解释不够好,我将解释相应的数据库用例。我有不同的表格,例如事件,地点,人员等我希望UNION从这些不同的表中得到结果。请记住,UNION连接行而不是列。

一个明显的解决方案是分别从不同实体获取数据,然后将NSMutableArrays连接在一起。我想知道是否有更有效的方式。

1 个答案:

答案 0 :(得分:0)

在获取请求中无法获取多于一种实体类型...

除非您喜欢'Union'的实体在您的模型中具有相同的基类(NSManagedObject除外)。

因此,如果您的所有实体都要从名为Tag的基类继承,那么您将能够一起获取所有这些实体。

然而,这将为实际数据库文件中的所有这些实体(如果类之间的交集很小)创建一个统一的表。

在您的情况下,这可能不可行,因为例如“人”和“位置”之间没有真正的连接,或者您可能认为这会导致性能问题。

另一个解决方案是(如您所建议的)为每个实体创建一个获取请求。