我想在iCloud中存储.sqlite数据库文件。我使用下面的代码,但当我登录我的icloud帐户并在“iCloud Drive”中看到时,该驱动器中没有任何文件。
我只想要icloud中我的Apps Documents文件夹的.sqlite文件并从该备份中恢复。
我从xcode打开了功能的iCloud选项。
代码:
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整个文件。
还帮我从云下载该文件。