2011-05-08 2 views
0

사용자가 레코드를 테이블에 삽입 할 수있는 기본 데이터베이스 응용 프로그램을 구축했으며 응용 프로그램에서 TableView에 표시합니다.각 컴파일시 sqlite 데이터베이스가 재설정되고 실행됩니다.

모든 것이 제대로 작동하고 있습니다. 예를 들어, 새로운 기록은 앱 전환기에서 앱을 죽이고 스프링 보드에서 다시 시작한 경우에도 표시됩니다.

하지만 Xcode를 사용하여 빌드하고 실행할 때마다 데이터베이스는 기본 레코드로 이동합니다! 새로운 기록은 존재하지 않습니다.

정상입니까? ...하지만 새로운 기록을 위해 앱을 테스트하고 싶습니다. 어떤 문제가 있습니까?

아래 BTW, JFYI는 편집 가능한 DB를 만들기 위해 사용하는 코드입니다.

-(NSString *)createEditableDatabase{ 
// Check if DB already exists 
BOOL success; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [paths objectAtIndex:0]; 
NSString *writableDB = [documentsDir stringByAppendingPathComponent:@"Database.db"]; 

success = [fileManager fileExistsAtPath:writableDB]; 

//The editable DB already exists 
if (success) { 
    return writableDB; 
} 


//The editable DB does not exist 
//Copy the default DB into App's Doc Dir. 

NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Database.db"]; 

success = [fileManager copyItemAtPath:defaultPath toPath:writableDB error:&error]; 

if (!success) { 
    NSAssert1(0, @"Failed to create writable DB file: '%@'", [error localizedDescription]); 
} 
return writableDB; 

}

+0

코드는 항상 "copy default db"를 실행하는 것처럼 보이지만 첫 번째'if (success) ...'에 else 부분을 사용해야합니다. –

+0

@Nick 그게 작동하지 않았다 : ( – BufferStack

+0

@Rajat Bansal 무슨 일이 잘못되었는지 말하기는 어렵다. NSLog를 코드에 넣고 db가 존재할 때 파일 경로를 덤프하고 파일이 복사 될 때 볼 수 있는가? default db? –

답변

0

더 깊이 파고 동안, 나는 내가 기록을 삽입 할 때 데이터베이스가 갱신되지 않았습니다를 찾기 날짜를 수정하는 것으로 나타났습니다. 그래서, 나는 아직도 DB 작업 (문서 하나가 아닌)을 수행하기 위해 이전 경로를 사용하고 있음을 알게되었습니다. :) 이제 모든 것이 잘 작동합니다. 어쨌든 고마워 닉

관련 문제