2014-04-06 5 views
0

사전에 dbfile sample.db을 만들어서 프로젝트에 추가했다.
하지만 추가 한 db를 참조하는 대신 처음부터 dbfile을 만듭니다.
추가 된 db를 참조하려면 어떻게 수정해야합니까? 문서에서 데이터베이스의 존재FMDatabase : 미리 DB를 만든다

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* dir = [paths objectAtIndex:0]; 
FMDatabase* db = [FMDatabase databaseWithPath:[dir stringByAppendingPathComponent:samble.db]]; 
[db open]; 

답변

0

확인 당신이 그것을 열기 전에 폴더, 그리고이 아니라면, 다음 이후에 문서 폴더에서 열기 전에 문서 폴더에 번들 버전을 복사합니다.

먼저 빈 데이터베이스를 문서 폴더에 저장 했으므로 제거하십시오 (앱을 제거한 다음 다시 설치하여 제거하십시오). 그리고 나서 다음과 같이 할 수 있습니다

BOOL success; 
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* dir = [paths objectAtIndex:0]; 
NSString* documentsPath = [dir stringByAppendingPathComponent:@"samble.db"]; 
NSFileManager* fileManager = [NSFileManager defaultManager]; 

if (![fileManager fileExistsAtPath:documentsPath]) { 
    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"samble" ofType:@"db"]; 
    NSAssert(bundlePath, @"%s: database not found in bundle", __FUNCTION__); 

    NSError *copyError; 
    success = [fileManager copyItemAtPath:bundlePath toPath:documentsPath error:&copyError]; 
    NSAssert(success, @"%s: copyItemAtPath failed: %@", __FUNCTION__, copyError); 
} 

FMDatabase* db = [FMDatabase databaseWithPath:documentsPath]; 
NSAssert(db, @"%s: databaseWithPath failed", __FUNCTION__); 
success = [db open]; 
NSAssert(success, @"%s: open failed", __FUNCTION__); 
+0

두 번째 대답을 주셔서 감사합니다. –