2014-10-02 2 views
3

Я хочу создать резервную копию и получить базу данных sqlite3 в основных данных. Это обеспечивает быстрое сохранение и восстановление данных пользователей, сохраненных в приложении. План состоит в том, чтобы отправить по электронной почте базу данных, затем открыть ее на принимающем устройстве, и все предыдущие данные будут волшебным образом отображаться, и все это хорошо.Резервное копирование и получение данных ядра База данных SQlite3

Я прочитал много сообщений и документации по этому предмету, но соединяя все это, я мог бы сделать с некоторыми советами.

То, что я сделал до сих пор:

мне удалось отправить базу данных sqlite3 с помощью дальнейших исследований следующие

NSString *filePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"db.sqlite"]; 
NSError *error = nil; 

    NSData *fileData = [[NSData alloc] initWithContentsOfFile:filePath options:0UL error:&error]; 
    if (error != nil) { 
     DebugLog(@"Failed to read the file: %@", [error localizedDescription]); 
    } else { 
     if (fileData == nil) { 
      DebugLog(@"File data is nil"); 
     } 
    } 

    MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init]; 
    if (mailView != nil) { 
     mailView.mailComposeDelegate = self; 
     [mailView setSubject:@"back up database"]; 
     [mailView addAttachmentData:fileData 
          mimeType:@"application/octet-stream" 
          fileName:@"db.sqlite3"]; 

     [mailView setMessageBody:@"Database attached" 
          isHTML:NO]; 


     [self presentViewController:mailView animated:YES completion: NULL]; 

    } 

заставляет меня верить, что я должен приложить другие файлы журнала на этот к этому? iOS: How can I create a backup copy of my core data base? And how to export/import that copy?

Ive вошли эти документы как db.sqlite db.sqlite-shm db.sqlite-wal

Мой вопрос 1. Должен ли я отправить все эти db.sqlite db.sqlite-shm db.sqlite-wal как вложения в электронной почте? 2. Какова процедура получения этих файлов и копирования их в приложение.
Простое открытие вложения не работает, поскольку оно может быть прочитано только определенными приложениями. Затем я сделал тип документа в своем info.plist, и мое приложение появилось в списке действий в качестве приложения для получения документа, но сбой при ошибке incomprehensible archive

Итак, как я могу сохранить и восстановить основные данные

ответ

0

Архивируйте все 3 файла sqlite в один zip-файл и назовите его Backup.myappbackup или что-то подобное (полезно добавить дату резервного копирования в имя файла). Затем вы можете зарегистрировать расширение, которое будет распознано вашим приложением, которое позволит Mail.app распознать это расширение и открыть эту резервную копию в вашем приложении. Затем вы распакуете основные файлы данных, заменяете их в своих местах и ​​перенастраиваете основной стек данных. Вы также можете разрешить пользователям размещать резервные копии через iTunes Sharing и восстанавливать их из папки «Документы».

+0

Спасибо за ответ, звучит интересно ... я собираюсь попробовать это, как только вернусь к вам с обновленным кодом, если это необходимо. Не могли бы вы объяснить немного больше о ваших предложениях резервного копирования, хотя iTunes Sharing из папки документов? Спасибо – JSA986

+0

@ JSA986 Для обмена iTunes см. Это http://www.raywenderlich.com/1948/itunes-tutorial-for-ios-how-to-integrate-itunes-file-sharing-with-your-ios-app –

+0

Спасибо потому что ссылка проверит это – JSA986

Смежные вопросы