2011-02-25 2 views
1

내 iPhone 응용 프로그램에서 핵심 데이터를 사용하고 있습니다. 그것은 시뮬레이터에서 사용할 때 잘 작동하지만 장치에 배포 할 때 내 코어 데이터 저장소의 값이 내 응용 프로그램에서 발견되지 않습니다. iPhone에 값을 삽입하면 Core Data의 값을 찾습니다.코어 데이터 : 영구 저장소는 Xcode에서 작동하지만 장치에는 없습니다.

iPhone에 배포하는 동안 Core Data의 가치를 지켜야합니다.

누구든지이 작업을 수행하는 방법을 알고 있다면 도와주세요.

+0

Google에 계속해서 도움을 주시면 유용한 답변을 얻으실 수 있습니다. "X를하려고 할 때 코드가 Y처럼 보이지만 장치에서 A를 수행 할 것으로 예상했지만 대신 B를 수행했습니다. 콘솔 출력에 'C'라고 표시됩니다. – occulus

+0

또한 http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx – occulus

+0

OP 작성자는 분명히 원어민 강사가 아닙니다. Xcode에서 기존의 영구 저장소가 제대로 작동하지만 장치에서 실패한 이유를 묻고 있습니다. – TechZen

답변

1

그것은 아주 쉽게 ...

  • 는, InitialData.sqlite 예를
  • 에 대한 응용 프로그램 번들

에 추가하여 CoreData 데이터베이스 파일

  • 이름을 준비 ... NSPersistentStoreCreation 할당 & 초기화 직전에 이와 비슷한 것을 추가하십시오.

    NSString *storePath = ... your store path for persistent store coordinator ...; 
    
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    if (![fileManager fileExistsAtPath:storePath]) { 
        NSString *initialStorePath = [[NSBundle mainBundle] pathForResource:@"InitialData" ofType:@"sqlite"]; 
        if (defaultStorePath) { 
        [fileManager copyItemAtPath:initialStorePath toPath:storePath error:NULL]; 
        } 
    } 
    

    일부 기본 데이터를 응용 프로그램에 복사한다고 가정합니다. 그게 내가 당신의 질문에서 추론 할 수있는 전부입니다 - 당신이 정말로 원하는 것이 분명하지 않습니다.

  • +0

    'defaultStorePath'가 선언되지 않았습니다. 'initialStorePath'를 의미합니까? – Stunner

    2

    기기에 앱을 설치하는 것을 포함하여 모든 파일은 파일을 읽기 전용으로 만드는 변경할 수없는 앱 번들에 있어야합니다.

    응용 프로그램과 함께 핵심 데이터 영구 저장소 파일을 포함하는 경우 응용 프로그램 번들 내에 있으며 읽기 전용 저장소로만 영구 저장소 코디네이터에만 추가 할 수 있습니다. 쓰기를 시도하면 오류가 발생합니다.

    일반적으로 표준 파일 작업을 사용하여 포함 된 영구 저장소 파일을 응용 프로그램 번들에서 복사 한 다음 응용 프로그램의 문서 또는 라이브러리 폴더로 복사하는 것이므로 readwrite 저장소가 필요합니다. 앱이 시작되면 앱 델리게이트는 코어 데이터 스택을 초기화하기 전에 스토어 존재 여부를 확인하고 아직 수행하지 않은 경우이를 복사합니다.

    한 스택에 두 개의 저장소 (읽기 전용 및 다른 읽기 쓰기)를 사용하는 고급 옵션도 있습니다. 그러나이 방법은 데이터 모델에 복잡성을 초래하며 일반적으로 필요하지 않습니다.

    관련 문제