从 iCloud 读取文件内容

Posted

技术标签:

【中文标题】从 iCloud 读取文件内容【英文标题】:Read Content Of File from iCloud 【发布时间】:2017-08-13 00:13:39 【问题描述】:

我已成功获取存储在 iCloud 驱动器中的文件列表。当我检查文件是否存在于路径中时,它返回 true。

但是当我尝试获取文件的内容时,它不允许我读取文件并提供一些垃圾数据。

我可以直接从 iCloud 读取文件还是需要先将其移动到应用程序的文档文件夹? 提前感谢您的帮助。

这是我的代码

iCloud 网址

static let iCloudDocumentsURL: URL? = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")

文件路径

let filePath =DocumentsDirectory.iCloudDocumentsURL?.appendingPathComponent(file).path

检查文件是否存在并显示“文件可用”

if FileManager().fileExists(atPath: filePath)
        
            print("File Available")
        
        else
        
            print("Not Available")
        

获取文件数据,显示176字节,实际上是76756字节

let fileData = NSData.init(contentsOfFile: filePath)

【问题讨论】:

你就是这样读取文件内容的?像文本文件这样的文件?哪个 Swift 版本?对于 Swift 3? 使用 Swif3。读取文件没有问题。如果我从文档目录中读取文件,它的工作正常。 @GirishM 你解决了吗? 【参考方案1】:

此目标 C 代码可以帮助您从 iCloud 读取文件...

UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.content"] inMode:UIDocumentPickerModeImport];    //public.composite-content
documentPicker.delegate = self;
[documentPicker setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:documentPicker animated:YES completion:nil];

实现UIDocumentPickerDelegate方法

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url 

    NSLOG(@"controller.documentPickerMode = %d", controller.documentPickerMode);

    if (controller.documentPickerMode == UIDocumentPickerModeImport) 
        //here you can download your file and store in document dir.
        //in "url" you get url of the file to be downloaded
       //so you can check here whether file is already available or not
    


- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller 

    NSLOG(@"documentPickerWasCancelled");

【讨论】:

我不想显示文档选择器。我已经在文档选择器上工作过。在我的项目中,我需要提供从文档文件夹或带有自定义 UI 的 iCloud 中选择文件的选项。

以上是关于从 iCloud 读取文件内容的主要内容,如果未能解决你的问题,请参考以下文章

从 iCloud 打开 txt 文件

苹果手机icloud备份文件都包括啥

应用程序无法读取 iCloud 文件

iCloud的iOS“管理存储”设置显示文件包的内容而不是包名是不是正常?

从 Core Data 创建一个 json 文件

从 Zip 文件中的文件中读取内容