2012-08-12 2 views
2

iOS 앱에서 coreData를 사용합니다. 사용자가 데이터를 데이터베이스에 추가, 삭제할 수 있습니다. 기본 데이터 (일부 다른 데이터 세트)를 제공해야합니다. 지금은 첫 번째 애플리케이션 실행으로 데이터베이스를 만들고 있습니다. 나는 csv 파일에서 데이터를 읽어 데이터베이스를 생성한다. csv는 응용 프로그램 샌드 박스에 있습니다. coreData (managedDocument)는 ApplicationDocument에 있습니다 (런타임시 생성 ...).coredata - 기본 데이터 전달/설정

나를 위해 완벽하게 작동합니다.하지만 AppStore에 앱을 푸시하면 Apple이 허용할까요?

답변

2

이 접근법에는 아무런 문제가 없으며 거절 이유가 될 수 없습니다. 또 다른 방법이 있습니다. 데이터베이스를 지금과 같은 방법으로 만들 수 있으며 .sqlite 파일을 복사하여 기본 데이터베이스로 제공하십시오. 그런 다음 앱에서 처음 실행하면됩니다. 다음 코드는 그것을 할 것입니다 :

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent: @"YourDBName.sqlite"]; 
    if (![fileManager fileExistsAtPath:storeURL.path]) { 
     NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"YourDBName" ofType:@"sqlite"]; 
     if (defaultStorePath) { 
      [fileManager copyItemAtPath:defaultStorePath toPath:storeURL.path error:NULL]; 
     } 
    } 

을 당신이 당신의 번들에 csv 파일을 포함 할 필요가 없습니다이 방법.

+0

나는 그 해결책에 대하여 생각했다; @ # ifdef DEBUG @는 생성을 위해 릴리즈에서 코드를 제거하고 설명 된대로 sqlite를 사용합니다. – Thomas

+0

앱을 보관하기 전에 대상을 'csv'형식으로 선택하지 않아도되므로 더 이상 필요하지 않게됩니다. – Adam

+0

선택을 취소하면 무엇을 의미합니까? 만약 내가 csv를 제거해야 sqlite 파일을 제공합니까? 예, 물론 – Thomas

0

예, 사과는 기본적으로 데이터베이스가 채워지는 것을 허용합니다. 표준 방법은 번들에 기본 데이터베이스를 제공 한 다음 시작시 응용 프로그램 문서 디렉토리에 데이터베이스가 있는지 확인하고 존재하지 않는 경우 번들에서 문서로 데이터베이스를 복사하는 것입니다 예배 규칙서.