CoreData在tableviewcell中的相关数据

时间:2014-06-21 07:28:36

标签: ios uitableview core-data relationship

我正在与CoreData中的相关实体合作。我想要一个带有单元格的tableview,这些单元格显示来自相关实体的记录属性,但我很难找到一个好方法来实现这一点。

以下是基础知识:

我的自定义TableViewCell有五件事:

UILabel *eventTime
UILabel *person1Name
UIImageView *person1Image //storing a string
UILabel *person2Name
UIImageView *person2Image //storing a string

事件实体有一个时间,person1Name和person2Name属性以及与我的Person实体的多对多关系。

Person实体具有name和image的字符串属性以及与Events实体的多对多关系。

活动总会有两个相关人员记录。

人们将参与许多活动。

在我的cellForRowAtIndexPath中,如何配置单元格以便为每个事件显示相关人员属性?

我正在玩这个:

EventsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EventCell" forIndexPath:indexPath];
Event *event = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSSet *persons = event.eventPersons;  //eventPersons is the NSSet in the NSManagedObject subclass…

// Configure the cell...

for (Player* p in persons) {
    if (p.firstName == event.person1Name) {
        cell.player1NameLabel.text = p.firstName;
        cell.player1ImageView.image = [UIImage imageWithContentsOfFile:p.playerImage];
    } else if (p.firstName == event.person2Name) {
        cell.player2NameLabel.text = p.firstName;
        cell.player2ImageView.image = [UIImage imageWithContentsOfFile:p.playerImage];
    }
}

但是我可能有多个人使用相同的名字,所以这在所有情况下都无法正常工作。我不想在Event实体中存储一堆重复信息来比较记录,而是希望以更优雅的方式获取每个单元格中两个相关人员记录的属性。

感谢。

1 个答案:

答案 0 :(得分:0)

您已在名称存储中包含重复信息。但问题在于它们并不是唯一的。

因此,将它们更改为唯一(即使用与名称不同的标识符)或使用不同的方法记录第一个和第二个(即使用有序关系)。