通过层次关系访问核心数据

时间:2014-07-21 22:31:10

标签: xcode core-data

我的核心数据模型在实体AthleteEvent之间以及从EventStats之间存在一对多的关系我有一对一一个关系。基本上,我的模型看起来像Athlete <<----->Events<------->Stats因此,一个运动员可以有不明数量的事件,在这些事件中,运动员可以为每个事件提供一组统计数据。我的问题是如何获取特定运动员内某一事件的具体统计数据。我的代码可以很好地添加运动员,然后为每个运动员制作某些事件,但是我无法访问Stats中与特定运动员中的特定事件相关的对象。我该如何处理?

1 个答案:

答案 0 :(得分:0)

恕我直言,您的数据模型不正确。您在文本中描述的内容应该如下所示(我也删除了您实体的混淆复数形式):

Athlete (stats)  <---------->> (athlete) Stats
Stats   (event)  <<----------> (stats)   Event

这里要理解的关键是统计数据是某种&#34;加入表&#34;将运动员与活动联系起来并储存&#34;副产品&#34;这种关系。如果您不想存储任何其他数据(如统计数据),那么您建议的多对多关系将是合适的。

让所有运动员参加活动:

[event.stats valueForKeyPath:@"athlete"]

让运动员参加的所有活动:

[athlete.stats valueForKeyPath:@"event"];

获取特定赛事的运动员统计数据:

[[athlete.stats filteredSetUsingPredicate:
  [NSPredicate predicateWithFormat:@"event = %@", event]] anyObject];