我在两个实体之间创建了多对多关系: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接受所选的团队并创建与该事件关联的新的重复团队。我如何才能将选定的团队与活动相关联?非常感谢任何帮助!
答案 0 :(得分:1)
好吧,如果您的多对多关系正确建模为将“后关系”设置为.xcdatamodel(或.xcdatamodeld)文件中的另一个关系,则不应该这样做。但是,在此之后你可以试试:
[event addTeamsObject:team];
添加此
[team addEventsObject:event];
基本上强迫自己背部关系。
然而来自您的代码,它 可能是因为您希望将所述事件与该特定teamName相关联。在这种情况下,您不必插入新的团队对象 - 只需获取现有团队对象并设置关系方法。