我在Cloud 15.2 kb中有一个文件。我无法将其复制回应用程序沙箱。我的代码如下所示。任何帮助表示赞赏
NSURL *ubiq = [[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil];
if (ubiq)
{
NSError *error = nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *cloudContainerURL = [fileManager URLForUbiquityContainerIdentifier:nil]:
NSURL*dirURL=[cloudContainerURL URLByAppendingPathComponent:@"Documents" isDirectory:YES];
[fileManager createDirectoryAtURL:dirURL withIntermediateDirectories:NO attributes:nil error:&error];
NSURL *icloudURL = [dirURL URLByAppendingPathComponent:@"Passwords File.txt"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
// Destination path
NSString *fileInDocumentsPath = [documentsPath stringByAppendingPathComponent:@"Passwords File.txt"];
NSURL* sandboxDocumentURL = [NSURL fileURLWithPath:fileInDocumentsPath];
[[ NSFileManager defaultManager ] copyItemAtURL:icloudURL toURL:sandboxDocumentURL error:&error ];
答案 0 :(得分:1)
您不能只将文件从iCloud复制到本地目录,因为该文件可能尚未存在于本地设备上。您的应用程序的iCloud文件仅按需下载,并且您没有做任何事情来创建该需求。因此,没有要复制的源文件。即使您知道该文件位于云中,也无法在本地存在之前对其进行访问。
如果您检查传递给error
的{{1}}参数,您可能已经知道了这一点。
要下载您使用的文件copyItemAtURL:toURL:error:
。这开始了这个过程。您可以使用以下方法之一找到下载完成的时间:
-[NSFileManager startDownloadingUbiquitousItemAtURL:error:]
,会在下载完成后发布更新,或NSMetadataQuery
,它不会通知您,但会有NSFileManager
标记,您可以查看。