Ios 核心数据一对多关系

Ios 核心数据一对多关系,ios,core-data,Ios,Core Data,我已经在互联网上搜索了好几天,寻找关于如何使用两个实体、为数据添加值并链接它们的教程。以下是我的应用程序的设置方式: 我正在制作一个应用程序,允许用户创建一个运动员,并在该运动员中添加多个体育赛事。我有两个实体:运动员和事件,从运动员到事件之间有一对一的关系,反之则是一对多的关系 我遇到的问题是要编写什么代码来在事件实体中添加姓名和对手属性值,同时确保特定姓名和对手只匹配一名运动员。我尝试过使用核心数据访问器方法,以及为实体创建新的NSManagedObject,并为特定键添加值 我试着遵循Co

我已经在互联网上搜索了好几天,寻找关于如何使用两个实体、为数据添加值并链接它们的教程。以下是我的应用程序的设置方式:

我正在制作一个应用程序,允许用户创建一个运动员,并在该运动员中添加多个体育赛事。我有两个实体:
运动员
事件
,从
运动员
事件
之间有一对一的关系,反之则是一对多的关系

我遇到的问题是要编写什么代码来在
事件
实体中添加
姓名
对手
属性值,同时确保特定姓名和对手只匹配一名运动员。我尝试过使用核心数据访问器方法,以及为实体创建新的NSManagedObject,并为特定键添加值


我试着遵循CoreDataRecipes示例代码,以及web上常见的核心数据教程。有没有人能用一些基本的方法函数或其他帮助您的教程帮助我走上正确的道路?谢谢。

您需要停止用关系数据库(RDBMS)来思考问题,开始用托管对象模型来思考问题。CoreData处理管理对象及其关联。您可以将运动员对象与事件对象关联(顺便说一句,我建议对实体名称使用单数与复数,即运动员和事件与运动员和事件,对一对多关系使用单数,对多对多关系使用复数)。这是一种偏好,但我把自己称为运动员(对象),而不是运动员(对象)。使它更具可读性和直观性

假设您的实体如下所示,并给出了您描述关系的方式:

    @interface Athlete : NSManagedObject
    @property (nonatomic, retain) NSString * name;
    //... a bunch more attributes
    @property (nonatomic, retain) Event *event;  // use singluar for relationship name too
    //...
    @end

    @interface Event : NSManagedObject
    @property (nonatomic, retain) NSString * eventName;
    //... a bunch more attributes
    @property (nonatomic, retain) NSSet *athletes; // use plural for relationship name
    //...
    @end

    @implementation MyViewController
    //... some method
    // fetch the athletes (possibly present in table view or other mechanism for selection)
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Athlete"];
    NSArray *athletes = [managedObjectContext executeFetchRequest:fetchRequest error:nil];

    // select the althletes (primary & opponent - hardcoded for example)
    //... 
    NSArray *selectedAthletes = [NSArray arrayWithObjects: athletes[0], athletes[1], nil];

    // create an event
    Event *event = [NSEntityDescription
                        insertNewObjectForEntityForName:@"Event"
                        inManagedObjectContext:context];
    // add the athletes
    [event addAthletes:[NSSet setWithArray:selectedAthletes]];
    //...   
@end
现在你们有一个有两名运动员参加的项目。如果您想区分对手和挑战者,则可以创建2对1关系(从项目到运动员),例如对手和挑战者,并通过以下方式将项目与运动员关联:

@interface Event : NSManagedObject
@property (nonatomic, retain) NSString * eventName;
//... a bunch more attributes
@property (nonatomic, retain) Athlete *opponent; // use singluar for relationship name
@property (nonatomic, retain) Athlete *challenger; 
//...
@end

//...
event.opponent = athletes[0];
event.challenger = athletes[1];
//...

我不知道你的意思。你能举例说明出了什么问题吗。i、 你做了什么,你期望发生什么,实际发生了什么。这样我们就可以确切地知道您在寻求什么帮助。:)我的应用程序设置为在一个视图中创建运动员并将其选择为“活动”,然后在另一个视图中,我有一个tableview控制器,您可以在最近选择的每个特定运动员下创建多个事件。基本上,我希望从两个文本字段中检索文本,并将这些字符串添加到我的实体中,以便它们可以创建一个表。我想我对使用关系和在一个实体中添加多个对象并将它们链接到另一个实体中的一个对象的整个编程方面感到困惑。不过,我对数据模型图理解得很好。这有意义吗?请添加核心数据模型的可视化结构。你看过这一系列教程了吗?