我一直在尝试将核心数据实现到我的应用程序中,最近,尝试设置一对多关系。我设置的关系如下
NSMutableSet *todoObjects = [[NSMutableSet alloc] init];
for (int i = 0; i < [allTodolistsData count]; i++) {
NSDictionary *dictionary = [allTodolistsData objectAtIndex:i];
TodolistObject *tempTodolist = [[TodolistObject alloc] initWithDict:dictionary];
[todoObjects addObject:[Todolists newTodolist:tempTodolist withContext:appDelegate.context]];
[tempTodolist release];
}
[project setTodolists:todoObjects];
项目变量是一个 NSManagedObject
,并且 setTodolists:
方法是自动生成的,用于设置项目的待办事项列表。由于该项目与待办事项列表集具有一对多关系,因此我传入一个 NSMutableSet。然而,当我这样做时,我收到以下错误:
-[__NSArrayM isEqualToSet:]:无法识别的选择器发送到实例 0xa325d60
我似乎找不到任何遇到此问题的人。有什么想法吗?
最佳答案
您必须从 NSManagedObject 获取关系的可变集并将新对象添加到其中,因此:
NSMutableSet *todoObjects = (NSMutableSet*)[project mutableSetValueForKey:@"todoLists"];
// Switch your for loop to use fast-enumaration
for (NSDictionary *dictionary in allTodolistsData) {
TodolistObject *tempTodolist = [[TodolistObject alloc] initWithDict:dictionary];
[todoObjects addObject:[Todolists newTodolist:tempTodolist withContext:appDelegate.context]];
[tempTodolist release];
}
// Save project in the same context where you created the object
关于iphone - 在核心数据中保存一对多关系时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018667/