런타임에 데이터베이스를 수정하는 경우 (즉, 레코드를 삽입, 삭제 또는 업데이트하는 경우)에는 번들에서 문서 디렉토리로 복사본을 만들어야합니다. iOS 전송 메커니즘을 사용하면 런타임에 번들 리소스를 수정할 수 없습니다. 따라서 문서 디렉토리에 복사해야합니다. 코드가 당신을 도울 수 아래 :
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *filePath = [documentsDir stringByAppendingPathComponent:@"network.db"];
BOOL success = [fileManager fileExistsAtPath:filePath];
if(!success)
{
NSString *defaultDBPath = [[[NSBundle mainBundle] pathForResource:@"network" ofType:@"db"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:filePath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable resource file with message '%@'.", [error localizedDescription]);
}
만 (만 선택 쿼리를 사용하여) 조회의 목적을 위해 귀하의 DB를 참조하는 경우, 문서 디렉토리에 번들 복사 할 필요가 없습니다.
.db 파일을 어디에 추가 하시겠습니까? 문서 디렉토리에 있습니까? – NKB
DB에 대한 작업을 수행하기 전에 이것을 문서 폴더에 복사해야합니다. –
주 링크에서 디렉토리에 액세스 할 수 없으므로 데이터를 삽입, 삭제 또는 업데이트하기 위해이 파일을 문서 디렉토리에 복사해야합니다. –