核心数据 - 如何访问实体属性?

时间:2013-08-13 02:52:11

标签: ios objective-c cocoa-touch cocoa core-data

我有2个实体。运动员和评估。运动员与Eval有很多关系。运动员可以有多个Evals,但Eval只能有1个运动员。第一个视图控制器,为Athlete显示一个表视图控制器。它显示所有运动员。当您点击一名运动员时,您将进入一个表格视图控制器,该控制器显示该运动员的所有Evals。如何在Athlete表格视图中显示evalArray [0]顶部eval的属性?

这是我到目前为止所做的:

allEvals.h

Eval *mostRecentEval = evalArray.firstObject;
AllAthletes *allAthletes = [self.storyboard instantiateViewControllerWithIdentifier:@"allAthletes"];
allAthletes.evalLastUpdated = mostRecentEval.date_recorded;

NSLog(@"%@",mostRecentEval.date_recorded);

当我记录它时,它正确地显示了属性,但当我去所有运动员时,我在视图出现时再次记录它,它说(null)。谁能告诉我为什么?

3 个答案:

答案 0 :(得分:1)

在您的Athletes视图控制器中,在tableView:cellForRowAtIndexPath:内,对于该行的Athlete,获取他们的Eval个对象并按日期排序(但是您正在构建eval数组)和然后获取最新的一个并使用它来填充运动员表格视图单元格上的标签。

答案 1 :(得分:0)

那么你如何在表格视图中用所有的Evals订购Evals?只需将排序保留在NSArray中,然后保存在tableView:didSelectRowAtIndexPath:中,从索引路径中获取行索引,然后在NSArray中获取该索引处的元素。 Etvoilà,你有用户点击的Eval!

答案 2 :(得分:0)

在coreData中你不使用索引来引用你的“关系”

你会知道你的桌面数据源上选择了什么“运动员”,

所以在敲击牢房后,获得“运动员”的“评估”

如果您正在使用运动员阵列:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 Athlete *selectedAthlete = [self.AthletesArray objectForIndex: indexPath.row];
 //deal with push new view controller, send the selectedAthlete
}

然后当你想要获得该运动员的Eval时

使用your property = selectedAthlete

执行谓词
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(athleteRelation =%@)", selectedAthlete];

现在是所选运动员的评估

祝你好运