2013-07-01 4 views
0

iOS 프로그래밍의 코드를 적용한 프로젝트에서 Core Data를 사용하려고합니다. The Big Nerd Ranch Guide (3rd ed). SQLite 파일을 열면 예외가 발생하며 문서 읽기 또는 검색 엔진 파기가 없기 때문에 의미가 무엇인지 또는이를 피하는 방법을 찾지 못합니다.NSPersistentStoreCoordinator addPersistentStoreWithType ... 예외가 발생합니다.

문제의 코드는 데이터 저장소 클래스의 init 메소드에, 다음과 같이 읽 예외가 addPersistentStoreWithType에 무슨 일이 일어나고

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     // snip 
     NSURL *storeURL = [NSURL fileURLWithPath:[self itemArchivePath]]; 
     NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] init]; 
     NSError *error = nil; 
     if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 
      [NSException raise:@"Couldn't open the SQL file" format:@"Reason: %@", [error localizedDescription]]; 
     } 
     // snip 
    } 
    return self; 
} 

: 라인을, 그래서 우리는 그것을 만들지 않을 if 블록의 예외. 여기에 내가 말한되고있어 내용은 다음과 같습니다

2013-07-01 14:46:04.647 (app name)[5859:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: NSStoreModelVersionHashes)' 

나는 결함이있는 줄에 중단 점을 설정하면, 엑스 코드 나 함수 호출 내에서 이동하지 않기 때문에 NSStoreModelVersionHashes 어떻게 나오고 어디 모르겠어요 그것을 없애기 위해. 나는 po storeURL 할 수 있고 그것은 적당한 URL 인 것처럼 보인다. iOS 시뮬레이터 재설정, SQL 파일에 다른 이름을 사용하거나 다른 문제와 관련이있는 것으로 보이는 솔루션은 아무 것도 도움이되지 않았습니다.

답변

2

영구 저장소 조정자는 관리 개체 모델이 필요합니다. 이것은 보통 managedObjectModel 이전

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"<yourModelName>" withExtension:@"momd"]; 
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

로 생성 된

NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel]; 

로 설정 코어를하는 방법의 예 에 대한 애플 개발자 라이브러리의 코어 데이터 샘플 코드의에서보세요 생성 데이터가 올바르게 스택.

+0

내가 잘라내는 줄 중 하나에서 [NSManagedObjectModel mergedModelFromBundles : nil]을 사용하여 NSManagedObjectModel 인스턴스를 만듭니다. 어쨌든 initWithManagedObjectModel을 해당 인스턴스와 함께 사용하면 누락 된 링크 인 것 같습니다. 사용하면 예외가 사라집니다. 감사! –

관련 문제