2010-04-22 3 views
1

이것은 이전 문제 here의 후속 조치입니다. 시뮬레이터를 리셋하면 모든 문제가 해결되고 앱을 완성 할 수 있습니다.장치에 오래된 파일 버전을 사용하는 coredata

이제 iPhone 장치에 앱을 설치할 때 똑같은 문제가 발생합니다. 그것은 두 번째 실체가없는 내 데이터베이스의 이전 버전을 집어 들고, 나는 두 번째 개체에 액세스하려고 할 때 충돌 :

2010-04-22 23:52:18.860 albumCloud[135:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Image'' 
2010-04-22 23:52:18.874 albumCloud[135:207] Stack: (
    843263261, 
    825818644, 
    820669213, 
    20277, 
    844154820, 
    16985, 
    14633, 
    844473760, 
    844851728, 
    862896011, 
    843011267, 
    843009055, 
    860901832, 
    843738160, 
    843731504, 
    11547, 
    11500 
) 

terminate called after throwing an instance of 'NSException' 

내가이 개 질문을 :

1) 어떻게 이전에 데이터를 삭제했는지 내 전화기에서 철저히 지루하게 앱을 삭제할 수 있습니까? (지금까지 일반 앱 삭제, 삭제 한 다음 집과 전원을 들고 재부팅을 시도하고 저주를 퍼붓고 앱을 실행하면서 위협하고 있습니다 ... 모든 것)

2) 응용 프로그램이 App Store에 있고 어떤 이유로 다른 항목을 상점에 추가하거나 다른 속성을 기존 항목에 추가하겠습니까? "x가 존재하지 않는다면 그것을 생성 할"방법이 있습니까?

답변

1

앱을 완전히 삭제하려면 일반적인 방법으로 삭제해야합니다. 즉, 흔들 리기 전까지 길게 누르면서 삭제 버튼을 탭합니다. 그런 다음 iTunes에 연결하십시오. 매번 iTunes가 앱과 백업 된 데이터를 복원하고있는 것일 수 있습니다.

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html#//apple_ref/doc/uid/TP40008426-SW1

기본적으로 사용 데이터 모델의 새 버전을 만들 Design->Data Model :

나중에 새로운 엔티티를 추가 지원하기 위해, 당신은 여기에 설명되어 버전 관리 및 자동 경량 마이그레이션을 사용하려면 Xcode에서 메뉴 항목을 선택한 다음 (Xcode 4에서 편집기 -> "모델 버전 추가") 몇 가지 코드를 변경하십시오. 그러면 Core Data가 이전 모델을 새 모델로 자동 마이그레이션합니다. 당신은 당신이 할 수있는 변화의 종류가 제한되어 있습니다. 새 엔티티를 추가하고 기존 엔티티에 선택적 속성을 추가하거나 기본값이 설정된 필수 속성을 추가 할 수 있습니다.

나를 빼앗긴 한 가지 점은 버전 관리 및 마이그레이션을 사용할 때 코어 데이터 NSManagedObjectModel을로드하는 방식이 변경된다는 것입니다. 마이그레이션없이 당신은 아마이 있습니다

NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; 

이 이런 식으로 뭔가를 변경해야 버전 관리 및 마이그레이션을 사용하기 시작하면 :

NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:@"DataModelName" 
                   ofType:@"momd"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
NSManagedObjectModel *model = [[[NSManagedObjectModel alloc] initWithContentsOfURL:url] autorelease]; 
아주 많이,이 링크의 내 목록에 간
+0

덕분에 보는을 마침내 필기 및 테스트를 마쳤습니다. –

+0

"앱을 완전히 삭제하려면 일반적인 방법으로 앱을 삭제해야합니다. 즉, 앱이 흔들 리거나 흔들릴 때까지 길게 누르십시오. 나는 이것이 역시 작동해야한다고 생각했지만, 장치에 들어가는 핵심 데이터 오류를 기반으로, 이전 데이터베이스를 삭제하지 않는 것 같습니다. 이 경우 앱을 삭제할 때 이전 데이터베이스가 삭제되지 않을 수 있습니까? –

관련 문제