2011-12-10 1 views
0

다음 코드를 사용하여 coredata에서 자동 마이그레이션합니다.속성 유형 만 업그레이드 할 때 Coredata 업그레이드가 실패합니다.

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

이것은 엔티티 클래스의 version1 코드입니다. 다음

@interface Entity : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSString * var; 

@end 

VAR의 유형이있는 NSDate

에있는 NSString에서 변경 verision에서

@interface Entity : NSManagedObject 
{ 
} 

@property (nonatomic, retain) NSDate * var; 

@end 

은 속성 버전 2 코드

다른 건은 속성 유형 경우 수행해야하는 경우 알려줘 변경되었습니다.

다른 클래스 또는 새 특성을 version2 coredata에 추가하면 정상적으로 작동합니다.

감사합니다, Dhana

+0

어떻게 실패합니까? 나는 최근에 이것을했는데 잘 돌아갔다. – Mundi

+0

이전 버전에서 최신 버전으로 응용 프로그램을 업그레이드 할 때 발생합니다. – Dhanaraj

+0

응용 프로그램을 이전 버전에서 최신 버전으로 업그레이드 할 때 발생합니다. 다음은 오류입니다 ------ logsUnresolved error 오류 도메인 = NSCocoaErrorDomain Code = 134140 "작업을 완료 할 수 없습니다 (코코아 오류 134140)."UserInfo = 0x7883ae0 {reason = 매핑 모델을 찾지 못하거나 자동으로 추론 할 수 없음 마이그레이션의 경우 destinationModel = () isEditable 0, entities – Dhanaraj

답변

2

당신은 엑스 코드 4.2의 핵심 데이터 모델 버전 변경을 구현하는 적절한 절차를 수행해야합니다. 특히 체크 아웃 :

또한 완전히 새로운 버전을 실행하기 전에 시뮬레이터 또는 장치에서 응용 프로그램을 삭제하는 데 도움이 될 것입니다.

+0

이미 appstore에 응용 프로그램이 있으므로 이전 데이터베이스를 삭제할 수 없습니다. 그리고 속성 유형의 변경을 제외한 모든 경우에 업데이트가 작동합니다. – Dhanaraj

+0

왜 투표를 중단 했습니까? 이 절차는 실제로 데이터가 손상되지 않도록합니다. 문자열을 날짜로 변환하는 자체 코딩 루틴을 작성해야합니다. – Mundi

관련 문제