将文件夹的.sqlite数据库文件备份并恢复到iCloud?

时间:2015-04-08 09:21:35

标签: ios xcode sqlite icloud

我想在iCloud中存储.sqlite数据库文件。我使用下面的代码,但当我登录我的icloud帐户并在“iCloud Drive”中看到时,该驱动器中没有任何文件。

我只想要icloud中我的Apps Documents文件夹的.sqlite文件并从该备份中恢复。

我从xcode打开了功能的iCloud选项。enter image description here

代码:

NSString *dataFile = [self getDBPath];

_documentURL = [NSURL fileURLWithPath:dataFile];

NSFileManager *filemgr = [NSFileManager defaultManager];

// [filemgr removeItemAtURL:_documentURL error:nil];

// _ubiquityURL = [[filemgr URLForUbiquityContainerIdentifier:nil] URLByAppendingPathComponent:@"Documents"];

_ubiquityURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

_ubiquityURL = [_ubiquityURL URLByAppendingPathComponent:@"Documents"];

if ([filemgr fileExistsAtPath:[_ubiquityURL path]] == NO)
            [filemgr createDirectoryAtURL:_ubiquityURL
              withIntermediateDirectories:YES
                               attributes:nil
                                    error:nil];

_ubiquityURL = [_ubiquityURL URLByAppendingPathComponent:@"imageDB.sqlite"];

// Search for document in iCloud storage
_metadataQuery = [[NSMetadataQuery alloc] init];

[_metadataQuery setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE 'imageDB.sqlite'",NSMetadataItemFSNameKey]];
[_metadataQuery setSearchScopes:[NSArray
                                         arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope,nil]];

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(metadataQueryDidFinishGathering:) name: NSMetadataQueryDidFinishGatheringNotification object:_metadataQuery];

[_metadataQuery startQuery];

用于我使用的上传数据库.sqlite文件:

NSError *error = nil;

if ([[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:_documentURL destinationURL:_ubiquityURL error:&error] == YES)
{
    NSLog(@"setUbiquitous OK");
}
else
    NSLog(@"setUbiquitous Failed error = %@", error);

所以请帮助我如何从我的应用程序备份我的.sqlite整个文件。

还帮我从云下载该文件。

0 个答案:

没有答案