2013-06-18 1 views
0

나는 다음과 같은 핵심 데이터 구조가 있습니다 core data http://i42.tinypic.com/2pqvx3c.png엑스 코드 코어 - 데이터 일대 다 관계 : addObject 방법 오류

내가 그룹 클래스에 어휘 개체를 추가하려합니다.

[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에서 데이터를 가져오고 있으므로 데이터를 저장하는 NSDictionary의 NSMutableArray를 반환하는 메서드를 작성하여 신속하게 테이블 뷰에 넣을 수 있습니다. 가져온 배열을 반환하는 또 다른 함수를 추가했습니다. 더 이상 오류가 없습니다. – yonatano

+0

불행히도 'NSObjectInaccessibleException'이라는 캐치가 발생하지 않는 예외로 인해 다른 오류가 발생했습니다. 이유 : 'CoreData가'0x8197b60 '' – yonatano

+1

@ Yoni201 : "CoreData는 오류를 수행 할 수 없습니다."라는 말은 여러 가지 이유가 있습니다. 개체를 만드는 데 사용 된 관리되는 개체 컨텍스트가 더 이상 존재하지 않을 수 있습니다. - 또한 코드에서 매번 새로운 AppDelegate를 만드는 것으로 나타났습니다. 매번 새로운 컨텍스트를 작성한다는 의미입니까? 그룹과 어휘 객체는 관계를 형성하기 위해 같은 맥락에서 살아야합니다. –