核心数据 - 如何访问实体属性?
Posted
技术标签:
【中文标题】核心数据 - 如何访问实体属性?【英文标题】:Core Data - How to access entity attribute? 【发布时间】:2013-08-13 02:52:10 【问题描述】:我有 2 个实体。运动员和评估。 Athlete 与 Eval 有一对多的关系。一个 Athlete 可以有多个 Eval,但一个 Eval 只能有 1 个 Athlete。第一个为 Athlete 显示表格视图控制器的视图控制器。它显示所有运动员。当你点击一个运动员时,你会进入一个表格视图控制器,显示该运动员的所有评估。如何在我的 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)。谁能告诉我为什么?
【问题讨论】:
当你选择一个 eval 时会发生什么? @Carl Veazey 这只是 eval 的详细视图,您可以在其中编辑其属性并保存它。 您希望它在 Athlete 视图中可见,也就是说,在所有 eval 列表之前? 是的,我想在运动员表格视图的每个单元格上显示一个 eval 属性。 你说运动员有很多评价——你想展示哪一个? 【参考方案1】:在您的 Athletes 视图控制器中,在 tableView:cellForRowAtIndexPath:
中,对于该行的 Athlete
,获取他们的 Eval
对象并按日期对它们进行排序(但是您正在构建 eval 数组),然后获取最新的并使用它来填充运动员表视图单元格上的标签。
【讨论】:
它没有用,但我知道它会起作用。我遇到的问题是我错误地设置了评估。当我点击一个运动员时,它会向我显示所有评估。评估没有所有者,这是每个人的评估,而不仅仅是运动员被窃听。现在正在努力,感谢您的帮助。【参考方案2】:那么,您如何在表格视图中对所有 Eval 的 Eval 进行排序?只需将排序保留在NSArray
中,然后在tableView:didSelectRowAtIndexPath:
中,从索引路径中获取行索引,然后在NSArray
中获取该索引处的元素。等等,你有用户点击的 Eval!
【讨论】:
不,我想从运动员视图访问评估。那么如何穿越两个实体呢?在显示运动员的第一个视图中,我将运动员的姓名作为视图单元格上的主要文本。我希望字幕文本成为与每个运动员相关的 Eval 属性。所以我会有很多很多 eval 属性。不仅仅是被选中的那个。【参考方案3】:在 coreData 中,您不使用索引来引用您的“关系”
您将知道在您的表格数据源中选择了哪个“运动员”,
所以在点击单元格后,获取该“运动员”的“评估”
如果您对运动员使用数组:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
Athlete *selectedAthlete = [self.AthletesArray objectForIndex: indexPath.row];
//deal with push new view controller, send the selectedAthlete
那么当你想为那个运动员获得评估时
用你的属性做一个谓词 = selectedAthlete
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(athleteRelation =%@)", selectedAthlete];
现在是所选运动员的评估
祝你好运
【讨论】:
我知道如何知道选择了哪个,我正在尝试找到 Eval 的相关索引路径。所以对于 Athlete1 我想要 Eval1,Athlete2 我想要 Eval2。我想将 eval 属性放在 Athlete 表视图中。 嗨,CD 中没有索引,对于关系,请在您的 Athlete 和 Eval 之间创建一个关系 [一对多]以上是关于核心数据 - 如何访问实体属性?的主要内容,如果未能解决你的问题,请参考以下文章