2013-01-19 2 views
0

내 iPhone 응용 프로그램에 db.sqlite라는 데이터베이스를 사용합니다. 나는 다음과 같은 코드를 사용하여 올바른 경로를 찾는 :응용 프로그램이 잘못된 데이터베이스 경로를 선택했습니다

- (NSString *) filePath { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"db.sqlite"]; 

}

이 다음 경로 반환

/Users/*******/Library/Application Support/iPhone Simulator/6.0/Applications/E1D5F78D-7FD2-45D7-A3DE-B53BCBB9BDC5/Documents/db.sqlite 

그러나 새로 생성이 경로에서 데이터베이스와 빈입니다. 올바른 경로를 문자열로 반환하면 제대로 작동하지만 아이폰에서 제대로 작동하지 않을 것이라고 생각합니다.

return @"/Users/*******/workspace/xcode/MyApp/MyApp/db.sqlite"; 

무엇이 잘못되었거나 잊었습니까?

답변

1

게시 한 코드는 앱의 Documents sandbox 디렉토리에서 파일을 가져 오는 것입니다. 원하는 경로에 따라 앱의 리소스 번들에서 파일을 가져와야합니다.

NSString *path = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"]; 

db.sqlite 파일은 응용 프로그램 번들 내에서 읽기 전용입니다. 이 데이터베이스 파일에 쓰려고 시도하지 마십시오.

데이터베이스에 쓸 필요가있는 경우 먼저 파일을 쓰기 가능한 위치 (예 : Documents 디렉토리)에 복사해야합니다. 그런 다음 해당 파일의 사본을 모든 읽기 및 쓰기에 사용하십시오.

+0

코드로 파일을 복사하거나 수동으로 수행해야합니까? 어떻게하면 나중에 iPhone에 올바른 파일을 가져올 수 있습니까? – daydr3amer

+1

코드를 통해 수행해야합니다. 일반적으로 파일이 Documents 디렉토리에 있는지 확인합니다. 그렇지 않으면 번들에서 템플릿을 복사합니다. 그런 다음 문서의 파일을 사용합니다. – rmaddy

관련 문제