2012-10-22 71 views
0

我一直在尝试将Core Data实现到我的应用程序中,最近尝试设置多对多关系。我设置为低于核心数据中保存多对多关系的问题

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

我似乎无法找到任何人谁拥有了这个问题。有任何想法吗?

+0

我贴我的代码,以证明我不是 - todoObjects是的NSMutableSet – coder

+0

数据应该是核心数据集 – coder

+0

是的。我明白它不是,它看起来像它认为todoObjects集是一个数组。我发布的信息是给我的信息。 – coder

回答

1

你必须从你的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