2012-10-22 93 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