iOS核心数据-添加到一对多关系集的对象无效

iOS核心数据-添加到一对多关系集的对象无效,ios,core-data,nsmutablearray,one-to-many,relationship,Ios,Core Data,Nsmutablearray,One To Many,Relationship,我的核心数据管理对象上下文中有一个名为Event的实体类型,它与另一个名为Activity的实体具有一对多关系。也就是说,每个事件可以有许多活动 在我的应用程序的AddNewEvent方法中,我执行以下操作: // create the first default itinerary activity object (Ceremony) NSManagedObject *newActivity = [NSEntityDescription insertNewObjectForEntityForN

我的核心数据管理对象上下文中有一个名为Event的实体类型,它与另一个名为Activity的实体具有一对多关系。也就是说,每个事件可以有许多活动

在我的应用程序的AddNewEvent方法中,我执行以下操作:

// create the first default itinerary activity object (Ceremony)
NSManagedObject *newActivity = [NSEntityDescription insertNewObjectForEntityForName:@"Activity" inManagedObjectContext:context];
[newActivity setValue:@"Ceremony" forKey:@"activityName"];
[newActivity setValue:[NSDate date] forKey:@"activityDate"];
[newActivity setValue:@"" forKey:@"activityNotes"];
[newActivity setValue:@NO forKey:@"complete"];
[newActivity setValue:@NO forKey:@"hidden"];
[newActivity setValue:@"" forKey:@"venueAddress"];
[newActivity setValue:@"" forKey:@"venueBusinessPhone"];
[newActivity setValue:@"" forKey:@"venueContact"];
[newActivity setValue:@"" forKey:@"venueEmail"];
[newActivity setValue:@"" forKey:@"venueName"];
[newActivity setValue:@"" forKey:@"venueWebsite"];

NSLog(@"new activity name: %@", [newActivity valueForKey:@"activityName"]); // test 1

NSMutableSet *newActivitiesSet;
[newActivitiesSet addObject:newActivity];

NSMutableArray *newActivitiesArray = [[newActivitiesSet allObjects] mutableCopy];
NSLog(@"new activity name in set: %@", [[newActivitiesArray objectAtIndex:0] valueForKey:@"activityName"]); // test 2

// finally, add activities to the Event object
[newEvent setValue:newActivitiesSet forKey:@"activities"];
也许我没有正确地处理集合/数组,但当我将活动的名称记录在注释为“test1”的行中时,它会正确地打印“certain”。但是,当我将其记录在注释为“test2”的行中时,它会打印(null)。活动对象似乎没有被添加到集合中,或者集合没有被正确地复制到数组中,或者可能是我没有想到的事情

我是否正确处理了集合、数组以及将集合添加到事件对象的活动关系的整个过程?(我意识到我的两个测试行在我将数据保存到上下文之前就出现了,但这对于我在这里运行的两个测试来说并不重要。)


谢谢

您需要实例化集合

NSMutableSet *newActivitiesSet = [[NSMutableSet alloc]init];

编辑:另外,我尽量避免使用“新”这个词。为什么不称之为活动和活动集呢。我累了。谢谢你。