什么是备份iphone应用程序的sqlite3数据库的数据的最佳方法?

时间:2012-01-24 08:48:23

标签: iphone objective-c sqlite backup

我想在dropbox中备份我的iphone应用程序数据库中的所有数据并在以后恢复。主要问题是应用程序中有太多数据,所以如果我使用sql查询来获取数据从sqlite3数据库并将其存储到文件中,然后再次从该文件中读取数据并将其插入到数据库中。任何人都建议我如何改进或者最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

您可以使用iCloud。 转到Itunes Connect上的应用管理器以生成iCloud密钥。 因此,所有数据都将存储在icloud上。

答案 1 :(得分:0)

您也可以使用uuid作为Web服务的密钥。因此,如果使用删除应用程序和重新安装时,您将使用密钥标识符下载所有数据。

例如:

uuid = [[UIDevice currentDevice] uniqueGlobalDeviceIdentifier];

Class for UUID

重要说明:使用全局模式,因为它允许在应用程序之间使用uuid。

答案 2 :(得分:0)

基于Dropbox的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];
}