将两个CoreData关系(具有反向关系)分配给同一实体

时间:2011-02-23 08:51:18

标签: iphone core-data nspredicate

在我的CoreData模型中,我有一个事件实体,它与特定的活动实体配对。目前,我在事件活动之间有一个名为 LatestActivity 的可选关系。我现在正在寻找专门为 NextActivity 创建新关系,但意识到不可能将两个关系的反转设置为同一个实体。

我理解为什么由于SQlite支持商店而无法做到这一点,但我想知道如何最好地解决这个问题。经过一段谷歌搜索后,我看到的最佳解决方案如下:在我的事件实体中设置一对多称为活动的关系,然后设置帮助函数获取并返回最新和下一个活动。

这很好,因为它允许我将来将多个活动附加到事件,但我很困惑在何处以及如何实现这些辅助函数。将使用以下逻辑通过比较活动实体中的NSDate来获取下一个和最新事件:

  • 最新活动代表当前日期之前的最近日期
  • 下一个活动表示日期大于现在的下一个活动

但是,为这些实体搜索CoreData最简洁的方法是什么?我应该在哪里进行搜索?

1 个答案:

答案 0 :(得分:3)

当你说你“意识到不可能将两种关系的倒数设置为同一个实体时”时,我可能不理解你。考虑这个模型:

enter image description here

很明显,两个实体之间可能存在多个双向关系。在这种情况下,有三种双向关系:

  1. 活动的活动< - >>活动的事件(从事件的角度来看很多)
  2. 活动的lastActivity< - >活动的inverseLastActivity
  3. 活动的nextActivity< - >活动的inverseNextActivity
  4. 当然,你仍然需要保持lastActivity和nextActivity的最新状态 - 或许,你的实时推导可能会更加健壮。

    我一直担心我误解了你的问题......