2010-05-24 3 views
0

나는이 간단한 코어 데이터 모델을했습니다 :관계 집합에 새 관리 대상 개체를 추가 할 때 내 앱이 충돌하는 이유는 무엇입니까?

질문,

답변 모든 모든 질문 4 답변이 있습니다. 내가 addAnswersObject있는 질문에 대한 답을 추가하려고 할 때 문제가 Question.m

@interface Question : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSString * questionText; 
@property (nonatomic, retain) NSSet* answers; 
@property (nonatomic, retain) Package * package; 

@end 


@interface Question (CoreDataGeneratedAccessors) 
- (void)addAnswersObject:(NSManagedObject *)value; 
- (void)removeAnswersObject:(NSManagedObject *)value; 
- (void)addAnswers:(NSSet *)value; 
- (void)removeAnswers:(NSSet *)value; 

@end 

Answer.m

@class Question; 

@interface Answer : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSString * answerText; 
@property (nonatomic, retain) NSNumber * correct; 
@property (nonatomic, retain) Question * question; 

@end 

:

코드는 다음과 같다.

for (CXMLElement *theElement in theNodes) 
    { 
     Question *qst = [NSEntityDescription insertNewObjectForEntityForName:@"Question" inManagedObjectContext:moc]; 

     // Create a counter variable as type "int" 
     int counter; 

     // Loop through the children of the current node 
     for(counter = 0; counter < [theElement childCount]; counter++) { 



      if([[[theElement childAtIndex:counter] name] isEqualToString: @"question"]) 
       [qst setQuestionText:[[theElement childAtIndex:counter] stringValue]]; 
      if([[[theElement childAtIndex:counter] name] isEqualToString: @"answer"]) { 
       Answer *answer = [NSEntityDescription insertNewObjectForEntityForName:@"Answer" inManagedObjectContext:moc]; 

       [answer setAnswerText:[[theElement childAtIndex:counter] stringValue]]; 

       CXMLElement *answerElement = (CXMLElement *)[theElement childAtIndex:counter]; 

       if([[[answerElement attributeForName:@"correct"] stringValue] isEqualToString:@"YES"]) { 
        [answer setCorrect:[NSNumber numberWithBool:YES]]; 
       } else { 
        [answer setCorrect:[NSNumber numberWithBool:NO]]; 
       } 

       [qst addAnswersObject:answer]; //The app crash here 

      } 

     } 

이 콘솔에서 로그는 다음과 같습니다 :

앱 충돌 코드의 일부이다

2010-05-24 20 : 02 : 38.475 Fgq [5670 : 40b] *** - [NSUserDefaults objectForKey :] : 할당 해제 된 인스턴스로 메시지가 전송되었습니다. 0x3c179a0 프로그램 수신 신호 : "EXC_BAD_ACCESS".

개체 데이터 모델에서 모든 개체를 여러 번 다시 가져 왔지만 모든 관계를 확인한 결과 모든 것이 괜찮은 것 같습니다.

어떤 종류의 문제 일 수 있습니까?

답변

0

qst 인스턴스의 -insertNewObjectForEntityName:inManagedObjectContext: 호출 직후에 NSLog(@"qst: %@:, qst);을 추가하면 콘솔 보고서에 표시되는 내용은 무엇입니까?

answer 인스턴스의 -insertNewObjectForEntityName:inManagedObjectContext: 호출 직후에 NSLog(@"answer: %@:, answer);을 추가하면 콘솔 보고서에 표시되는 내용은 무엇입니까?

+0

내가보고 한 내용을 추가했습니다. – bontoJR

0

NSLog (@ "qst : % @", qst)로보고되는 내용은 다음과 같습니다. 37 :

2010-05-24 23 : 207 452] QST : (엔티티 : 질문; ID : 33.948 FGQ 0x3c19ab0 , 데이터 { 응답 = ( ) 패키지 = nil; questionText = nil;})

관련 문제