iOS 从 iCloud Drive 下载文件

标签 ios file download icloud-drive

在我的 iOS 应用程序中,我将一些文件存储到 iCloud Drive 文件夹以进行备份。现在我想检索该文件,但我不知道这样做的正确方法是什么。我的意思是如果 iCloud Drive 有任何特定的方法,或者我可以从 url 中获取它。

我像这样将文件存储到 iCLoud ( https://stackoverflow.com/a/27358392/3065901 ):

- (void) storeToIcloud
{
   // Let's get the root directory for storing the file on iCloud Drive
   [self rootDirectoryForICloud:^(NSURL *ubiquityURL) {

        if (ubiquityURL) {

             // We also need the 'local' URL to the file we want to store

             NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
             NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
             NSString *filePath = [documentsPath stringByAppendingPathComponent:@"myFile.xml"]; //Add the file name

             NSURL *localURL = [NSURL fileURLWithPath:filePath];

             // Now, append the local filename to the ubiquityURL
             ubiquityURL = [ubiquityURL URLByAppendingPathComponent:localURL.lastPathComponent];

             // And finish up the 'store' action
             NSError *error;
             if (![[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:localURL destinationURL:ubiquityURL error:&error]) {
                NSLog(@"Error occurred: %@", error);
             }
        }
        else {
            NSLog(@"Could not retrieve a ubiquityURL");
        }
   }];
}

- (void)rootDirectoryForICloud:(void (^)(NSURL *))completionHandler {

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSURL *rootDirectory = [[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]URLByAppendingPathComponent:@"Documents"];

        if (rootDirectory) {
             if (![[NSFileManager defaultManager] fileExistsAtPath:rootDirectory.path isDirectory:nil]) {
                  NSLog(@"Create directory");
                  [[NSFileManager defaultManager] createDirectoryAtURL:rootDirectory withIntermediateDirectories:YES attributes:nil error:nil];
             }
        }

        dispatch_async(dispatch_get_main_queue(), ^{
             completionHandler(rootDirectory);
        });
    });
}

- (NSURL *)localPathForResource:(NSString *)resource ofType:(NSString *)type {
      NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
      NSString *resourcePath = [[documentsDirectory stringByAppendingPathComponent:resource] stringByAppendingPathExtension:type];
      return [NSURL fileURLWithPath:resourcePath];
}

如何从 iCloud 驱动器下载文件?

提前致谢。

最佳答案

你应该使用 NSMetadataQuery 从 icloud 获取项目,然后当你将书签挂接到文件时使用 NSFileCoordination 读取它,可以使用相同的方法从云端或您的应用程序沙盒中读取...此处详细解释了所有内容:Building Document Based Apps ,甚至还有一些您可以遵循的示例代码。希望这对您有所帮助!

关于iOS 从 iCloud Drive 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849600/

相关文章:

ios - 显示 UIAlert 会使应用程序崩溃吗?

ios - 优先级和背景在 iOS 8 中被弃用

iOS 8 自动布局问题

file - 如何使用Golang在网络打印机上打印文件或格式文本

iphone - 如何下载iphone的youtube视频-以编程方式使用Objective-C

ruby - 找出 Firefox 通过 watir-webdriver 保存的文件名

ios - Xcode 验证步骤作为临时分发的一部分

java - 如何为 csv java 记录器文件设置 header 。使用记录器 java.util.logging.Logger

android - 尝试保存文件时没有这样的文件或目录

bash - 在curl中无限期地请求数据