копирование базы данных SQLite из папки «Входящие» в каталог документов

#ios #objective-c #sqlite

#iOS #objective-c #sqlite

Вопрос:

при открытии файла sqlite из почты он попадает в папку с именем входящие в каталоге мои документы, и я использую этот код для копирования этого файла в каталог документов

 - (void) copyAdd
{
NSString *docsDir;
NSArray *dirPaths;
NSString *databasePath;

NSFileManager *filemgr = [NSFileManager defaultManager];

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,        YES);
docsDir = [dirPaths objectAtIndex:0];
NSString* inboxPath = [docsDir stringByAppendingPathComponent:@"Inbox"];

// Build the path to the database file
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"CAT.sqlite"]];

if(![filemgr fileExistsAtPath:databasePath]){

    [filemgr copyItemAtPath:inboxPath toPath:databasePath error:nil];





    NSLog( @"copy create database");
    UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"sucess" message:@"COPY CAT DB"         delegate:self cancelButtonTitle:@"dismis" otherButtonTitles:nil, nil];
    [alert show];
}else{
    NSLog( @"Failed to open/create database");

}
  

он создает папку с именем CAT.sqlite, и внутри этой папки я нашел базу данных CAT.sqlite

как я могу скопировать файл с именем CAT.sqlite из папки «Входящие» в каталог документов без создания папки с тем же именем.

Комментарии:

1. В чем был вопрос?

2. необходимо скопировать базу данных в каталог документов без создания какой-либо папки, также необходимо удалить старую базу данных из папки Входящие при получении новой с тем же именем

3. Если у вас есть конкретная проблема, которую нужно решить, то это правильный сайт, чтобы задать интересующие вас вопросы. Однако мы здесь не для того, чтобы внедрять функциональность от вашего имени; мы не работаем для вас. Так что попробуйте и отредактируйте свой вопрос с указанием конкретных проблем, с которыми вы столкнулись, включая подробную информацию о том, что не работает, и о любых полученных вами сообщениях об ошибках.

4. Я думаю, что я спрашиваю о конкретной вещи: почему папка создается вместо копирования базы данных, и я помещаю код, который я использую, поэтому, пожалуйста, если вы не знаете, почему, пожалуйста, не беспокоите меня

5. Опубликованный вами код пытается скопировать Indbox папку в файл с именем CAT.sqlite . Вам нужен путь к файлу в Inbox папке, и вы хотите переместить этот файл, а не Inbox папку.

Ответ №1:

это мой код, который решает проблему, единственное, чего не хватает, — указать имя файла, которое мне нужно скопировать из папки «Входящие», а не из папки «Все», а из папки CAT.sqlite

  - (void) copyAdd
{
NSString *docsDir;
NSArray *dirPaths;
NSString *databasePath;

NSFileManager *filemgr = [NSFileManager defaultManager];

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString* inboxPath = [docsDir stringByAppendingPathComponent:@"Inbox"];
NSString *filePath = [inboxPath stringByAppendingPathComponent:@"CAT.sqlite"];

// Build the path to the database file
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"CAT.sqlite"]];

if(![filemgr fileExistsAtPath:databasePath]){

    //        NSLog(@"dbPAth : %@",dbPAth);
    [filemgr copyItemAtPath:filePath toPath:databasePath error:nil];





    NSLog( @"copy create database");
    UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"sucess" message:@"COPY CAT DB" delegate:self cancelButtonTitle:@"dismis" otherButtonTitles:nil, nil];
    [alert show];
}else{
    NSLog( @"Failed to open/create database");

}



}