2012-02-10 3 views
0

초기 객체가 생성되어 ManagedObjectContext에 삽입되고 컨텍스트가 저장됩니다. 이 객체는 CoreData 스택을 관리하는 싱글 톤 클래스의 속성으로 설정됩니다.초기 CoreData 객체의 유형이 잘못되었습니다.

이 원본 객체는 다른 클래스에서 참조 될 때 잘못된 유형 (NSCFString)입니다. 반면에, 객체가 페치되면 올바른 클래스이며 올바르게 작동합니다.

NSArray *pdaSetupRecords = [results fetchedObjects]; 
//If this is the initial launch of the application, create 
//a PDASetup object and save the context, otherwise set 
//pdaSetup to the fetched instance. 
if ([pdaSetupRecords count] < 1) { 
    PDASetup *newPdaSetup = (PDASetup *) [NSEntityDescription insertNewObjectForEntityForName:@"PDASetup" inManagedObjectContext:managedObjectContext]; 
    [self saveContext]; 
    pdaSetup = newPdaSetup; 
    NSLog(@"SystemUtility - PDASetup object created and saved."); 
} else { 
    pdaSetup = [pdaSetupRecords objectAtIndex:0]; 
} 

볼 수있는 것처럼 하나의 PDASetup 객체가 있습니다. PDASetup 오브젝트가 작성 될 때 문제점이 발생합니다. 앱을 다시 실행하고 PDASetup 객체를 가져 오면 모든 것이 정상입니다.

의견이 있으십니까?

답변

0

당신이 쓰는 의미합니까 :

pdaSetup = [newPdaSetup retain]; 

또는

self.pdaSetup = newPdaSetup; //with a retained @property 

앱은 당신에게 NSCFString를 유형입니다 말하는 충돌인가? 아마도 메모리 주소를 문자열로 덮어 썼을 것입니다.

+0

pdaSetup이 유지됩니다. –

+0

다른 제안과 마찬가지로 self.pdaSetup을 설정하면 문제가 해결되었습니다. 나는 자기를 세우는 것이 변화를 가져 왔음을 깨닫지 못했다. –

+0

내가 추측에서 맞을 때 나는 그것을 좋아한다. 메모리 관리 규칙을 다시 읽고 @properties를 사용해야한다. self. *는 속성에 'retain'을 사용하면 변수의 속성 접근 자/변형자를 호출하고 변수를 유지합니다. 또는 ARC를 사용하여 시작하십시오. – bandejapaisa

관련 문제