2010-04-19 3 views
0

좋아, 지금은 에뮬레이터에서 개발 완료 및 내 테스트 장치에 설치할 때, 나는 오류에게 DB를 제어 할 수있는 설정은 무엇 읽기 전용 데이터베이스sqlite3 iPhone 에뮬레이터 대 장치 권한?

를 작성하는

시도를 얻었다 접속하다? 배포시 관리가 어려울까요?

추가 정보 ... 나는 무슨 일이 일어나고 있는지 알고 있다고 생각합니다 ... 내 DB를 찾을 때 튜토리얼과 같은 경로에 있지 않습니다. 내가 뭘하고 싶은지는 "콘텐츠"에 대한 프로젝트의 루트 폴더 아래에있는 그룹입니다. 이 그룹에 정의 된 경로 아래에 JustADatabase.sqlite 파일을 추가했습니다. 모든 경로가 쓰기 가능하지는 않기 때문에 사용자가 만든 경로는 설치시 쓰기가 가능하지 않습니다.

올바른 방법으로 파일을 설치하려면 빌드/복사 스크립트를 사용하는 방법이 있다고 생각합니다.

이것이 문제라고 생각하십니까? 수정 사항을 스크립팅하는 방법이나 파일을 프로젝트의 올바른 위치에 두어 올바르게 복사되도록하는 방법을 알고 있습니까? 다음은 주석 처리 된 '튜토리얼'경로가있는 sqlite-open 명령에 이르는 코드입니다. 이는 읽기 작업에 사용되며 쓰기 액세스 거부의 원인 일 수 있습니다.

- (void)initializeDatabase { 

    // ??? NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    // ??? NSString *documentsDirectory = [paths objectAtIndex:0]; 
    // ??? NSString *pathTutorial = [documentsDirectory stringByAppendingPathComponent: @"JustaDatabase.sqlite"]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"JustaDatabase" ofType:@"sqlite"]; 

    if(sqlite3_open([path UTF8String], &database) == SQLITE_OK) { 
     NSLog(@"%s: opened database %@", __FUNCTION__, path); 
    } else { 
     NSAssert1(0,@"Failed to open database: '%s'.", sqlite3_errmsg(database)); 
    } 
} 

답변

1

sqlite3 권한은 단지 파일 사용 권한입니다.

장치의 번들 디렉토리에있는 파일에 쓸 수 없기 때문에 문서 디렉토리에 db 파일을 복사해야합니다.