2013-06-18 3 views
0

У меня есть следующая структура ядра-данные: core data http://i42.tinypic.com/2pqvx3c.pngXcode Core-Data ко-многим: метод AddObject ошибки

Я пытаюсь добавить Словаря объекты класса Group.

Мои попытки сделать это с помощью метода [Group addObject: VocabularyObject] имеют , но безрезультатно.

AppDelegate *delegate = [[AppDelegate alloc]init]; 

Group *group = [_arr objectAtIndex:indexPath.row]; //I have an array with 'Group' objects 

    //create vocabulary item 
    Vocabulary *vocabularyEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Vocabulary" inManagedObjectContext:[delegate managedObjectContext]]; 
    vocabularyEntity.prompt = @"Here is a cool prompt"; 
    vocabularyEntity.definition = @"Here is an even cooler definition"; 

    [delegate saveContext]; 

    [group addTermsObject:vocabularyEntity]; 

Я получаю эту ошибку, я использовал исключение точку останова и ошибка происходит из вызова addTermsObject.

[__NSDictionaryI addTermsObject:]: unrecognized selector sent to instance 0x74c4f70 

Объект Я пытаюсь добавить определенно объект словарного запаса, поэтому я точно не знаю, что может быть проблема.

Любые идеи?

Спасибо!

ответ

1

сообщение об ошибке указывает, что ваш

Group *group = [_arr objectAtIndex:indexPath.row]; 

является не управляемый объект, как вы ожидали, но NSDictionary. Возможно, вы извлекли массив, используя

[fetchRequest setResultType:NSDictionaryResultType]; 

в запросе на выбор? В этом случае все выбранные объекты - это просто словари без любого соединения с контекстом управляемого объекта, и вы не можете использовать эти словари для для установления любых отношений.

UPDATE: Другая ошибка здесь:

AppDelegate *delegate = [[AppDelegate alloc]init]; 

Это выделяет приложение делегата новый вместо того, чтобы использовать существующий. Это , вероятно, не то, что вы хотите, и вы должны заменить его

AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
+0

Вы правы, я этого не замечал. Я получаю данные из AppDelegate, поэтому я написал метод, чтобы вернуть NSMutableArray из NSDictionaries, которые хранят данные, чтобы я мог быстро поместить его в мой tableview. Я добавил еще одну функцию, которая просто возвращает извлеченный массив, больше ошибок. – yonatano

+0

К сожалению, сейчас я получаю еще одну ошибку: завершение приложения из-за неотображенного исключения «NSObjectInaccessibleException», причина: «CoreData не смог выполнить ошибку для« 0x8197b60 '' – yonatano

+1

@ Yoni201: «CoreData не может выполнить ошибку» может иметь несколько причин, которые действительно трудно сказать. Возможно, контекст управляемых объектов, который использовался для создания объектов, больше не существует. - Я также заметил, что вы каждый раз создаете новый AppDelegate в своем коде. Означает ли это, что каждый раз вы создаете новый контекст? Объекты группы и словаря должны жить в том же контексте, чтобы создать отношения. –

Смежные вопросы