如何使用两个现有对象创建Core Data关系

时间:2012-03-11 18:48:26

标签: ios core-data entity-relationship

我在两个实体之间创建了多对多关系:event<< - >> team。 选择一个活动会带您进入一个详细信息页面,您可以在其中更改参与活动的设置/关联团队。团队页面向用户显示可以选择(带有复选标记)以与事件关联的团队列表(在流程早期创建)。事件MOC被传递到团队视图,团队视图具有自己的团队MOC。当您选择将参加活动的团队时,我无法创建与活动的关系。在保存方法中:

-(void)add 
{
for (int i = 0; i < dataArray.count; ++i) 
{
    NSDictionary *item = [dataArray objectAtIndex:i];

    NSString *name = [item valueForKey:@"teamName"];
    BOOL isChecked = [[item valueForKey:@"teamChecked"] boolValue];

    if (isChecked != 0)
    {

        NSManagedObjectContext *context = [event managedObjectContext];
        Team *team = [NSEntityDescription insertNewObjectForEntityForName:@"Team" inManagedObjectContext:context];

       [event addTeamsObject:team];

        team.teamName = name;

        NSError *error = nil;
        if (![context save:&error]) 
        {

            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }

    }

} 

[self dismissModalViewControllerAnimated:YES];
}

代码的问题在于insertNewObjectForEntity接受所选的团队并创建与该事件关联的新的重复团队。我如何才能将选定的团队与活动相关联?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

好吧,如果您的多对多关系正确建模为将“后关系”设置为.xcdatamodel(或.xcdatamodeld)文件中的另一个关系,则不应该这样做。但是,在此之后你可以试试:

   [event addTeamsObject:team];

添加此

   [team addEventsObject:event];

基本上强迫自己背部关系。

然而来自您的代码,它 可能是因为您希望将所述事件与该特定teamName相关联。在这种情况下,您不必插入新的团队对象 - 只需获取现有团队对象并设置关系方法。