2011-02-23 88 views
3

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

我明白为什么这是不可能的,因为SQlite支持存储,但我想知道如何去做。经过一番谷歌搜索我见过的最好的解决方案如下:设置一个一对多的关系,称为活动在我的事件实体,然后设置辅助函数来获取并返回最新和下一个活动。

这很好,因为它允许我将多个活动附加到未来的事件中,但我对于在何处以及如何实现这些辅助函数感到困惑。

  • 最新活动表示当前日期
  • 下一个活动代表之前的最近日期:下和最近发生的事件将通过以下逻辑活动实体内比较一个NSDate的方式来获取下一个活动的日期大于

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

回答

3

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

enter image description here

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

  1. 事件的活动< - >>活动的事件(这是对多从比赛的角度来看)
  2. 事件的lastActivity < - >活动的inverseLastActivity
  3. 事件的nextActivity < - >活动的inverseNextActivity

当然,你仍然需要保持lastActivity和nextActivity最新的 - 也许,你得出的,在现实的建议时间可能更加健壮。

我有挥之不去的担心,我误解了你的问题...