вам нужно получить путь к каталогу документов и поместить туда файл базы данных.вам нужно выполнить все операции чтения / записи в вашем приложении из скопированной базы данных в каталоге документов вашего приложения.
Я использую эти методы для создания копии моей БД в каталоге документов: вам просто нужно вызвать этот метод:
+(BOOL)copyDBFileToDocumentsDirectory:(NSString*)dbFilename overwrite:(BOOL)yesNO
и просто нужно передать имя файла с расширением.
+(NSString*)databaseABSPath:(NSString*)databaseName existsInDocumentsDirectory:(BOOL)existenceStatus
{
BOOL success = NO;
NSString *databasePath = nil;
if(existenceStatus)//documents Directory
{
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
}
else //from bundle
{
NSArray *resourceSeparatedByExtension = [databaseName componentsSeparatedByString:@"."];
if([resourceSeparatedByExtension count]<2)
{
NSLog(@"Problem with database name or extension");
return nil;
}
databasePath = [[NSBundle mainBundle] pathForResource:[resourceSeparatedByExtension objectAtIndex:0] ofType:[resourceSeparatedByExtension objectAtIndex:1]];
}
NSFileManager *fileManager = [NSFileManager defaultManager];
success = [fileManager fileExistsAtPath:databasePath];
if(!success)
{
NSLog(@"Database file does not exist at path");
return nil;
}
else
{
return databasePath;
}
}
+(BOOL)copyDBFileToDocumentsDirectory:(NSString*)dbFilename overwrite:(BOOL)yesNO
{
NSString *filePath = [mySQLiteDb databaseABSPath:dbFilename existsInDocumentsDirectory:NO];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:dbFilename];
if(filePath)
{
NSError *error = nil;
if(!yesNO && [[NSFileManager defaultManager] fileExistsAtPath:databasePath])
{
NSLog(@"File already exist at path - instruction is not to overwrite");
return YES;
}
else
{
[[NSFileManager defaultManager] removeItemAtPath:databasePath error:&error];
}
error = nil;
[[NSFileManager defaultManager] copyItemAtPath:filePath toPath:databasePath error:&error];
if(!error)
return YES;
NSLog(@"Error copying file :\n\n%@\n\nuserinfo:%@\n\nFailure reason: %@\n\n",[error localizedDescription],[[error userInfo] description],[error localizedFailureReason]);
}
return NO;
}