Каков наилучший способ сделать резервную копию данных базы данных sqlite3 приложения iphone? - PullRequest
0 голосов
/ 24 января 2012

Я хочу взять резервную копию всех данных в базе данных моего приложения для iphone в dropbox и восстановить ее позже. Здесь главная проблема в том, что в приложении слишком много данных, поэтому, если я использую SQL-запросы для получения данныхиз базы данных sqlite3 и сохранения его в файл, повторного считывания данных из этого файла и вставки его в базу данных. Кто-нибудь может подсказать, как я могу улучшить это или каков наилучший способ сделать это?

Ответы [ 4 ]

2 голосов
/ 24 января 2012

Вы можете использовать iCloud. Перейдите к менеджеру приложений в Itunes Connect, чтобы создать ключ iCloud. Итак, все данные будут храниться на icloud.

2 голосов
/ 24 января 2012

Я предполагаю, что вы имеете в виду, что вы хотите иметь возможность восстановить данные после того, как пользователь каким-то образом удалил приложение и заново установил его. Поскольку каждое приложение имеет свое влияние в пределах своей песочницы, единственным разумным вариантом будет использование сервера. Что касается простого ответа на ваш вопрос - нет способа сделать это, как вы описали.

0 голосов
/ 12 мая 2013

my drop-based Sync API решение:

- (IBAction)onTouchDropboxBackup:(id)sender {

    DBAccount *account = [[DBAccountManager sharedManager] linkedAccount];

    if (account) {

        if (![sharedDelegate filesystem]) {

            DBFilesystem *filesystem = [[DBFilesystem alloc] initWithAccount:account];
            [DBFilesystem setSharedFilesystem:filesystem];
            [sharedDelegate setFilesystem:filesystem];
            [filesystem release];
        }

        DBPath *destination = [[DBPath root] childPath:kDataDBFileName];
        DBError *error = nil;

        //check presense
        DBFile *file = [[DBFilesystem sharedFilesystem] openFile:destination
                                                       error:&error];
        if (error){//not present

            [[DBFilesystem sharedFilesystem] createFile:destination
                                              error:&error];

            file = [[DBFilesystem sharedFilesystem] openFile:destination
                                                   error:&error];
        }

        if (!error) {

            [file writeContentsOfFile:[DOCUMENTS_DIR stringByAppendingPathComponent: kDataDBFileName]
                          shouldSteal:NO
                            error:&error];

            [file update:&error];
            [file close];
        }

    }else
        [[DBAccountManager sharedManager] linkFromController:self];
}
0 голосов
/ 24 января 2012

Вы можете использовать слишком uuid в качестве ключа для вашего веб-сервиса.Так, если использовать приложение удаления и при его переустановке, вы можете загрузить все данные с идентификатором ключа.

Например:

uuid = [[UIDevice currentDevice] uniqueGlobalDeviceIdentifier];

С Класс для UUID

Внимание! Используйте глобальный режим, поскольку он позволяет использовать uuid между приложениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...