如何访问由Files.app复制的UIPasteboard中的数据?

时间:2018-03-29 15:08:15

标签: ios uipasteboard files.app

我想使用Files.app复制文件夹(例如从Dropbox或iCloud),然后切换到我的应用程序并阅读此文件夹的内容以进行进一步处理。我找不到从UIPasteboard获取实际数据的方法。在loadObject上拨打NSItemProvider会给我一个NSData存档,我可以取消存档,然后获得一个(私有)FPItem,它会实现<NSFileProviderItem>,但现在?我怎样才能真正请求下载此项指向的实际文件夹?

2 个答案:

答案 0 :(得分:0)

据我了解,您想从Dropbox下载文件夹。您可能需要考虑使用带有URLSession.shared.datatask(...)请求的let fileManager = FileManager.default let directoryURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] let destURL = directoryURL.appendingPathComponent("myTestFile") Dropbox API。如果您不想处理实施细节,可以使用像 SwiftyDropbox 这样的库。没有必要使用 UIPasteboard ,因为您的最终目标是将文件夹下载到您的应用。如果您要将所述文件夹保存到 Files app ,则可以在下载/处理该文件夹后执行此操作。

以下是一些有用的链接:

  1. REST
  2. Swifty Dropbox Overview
  3. Swifty Dropbox Download Example
  4. Swifty Dropbox API Docs
  5. 在链接2中,下面的代码片段获取了保存文件的目录。获得整个文件夹的一种方法是(1)在Documents目录中创建一个新文件夹,如Dropbox API HTTP (RESTful Requests)和( 2)遍历Dropbox文件夹中的每个项目,并将其添加到新创建的文件夹中。

    RunTask

    要实现(1),您需要获取文件夹中的所有文件,您可以使用此this API端点执行此操作。然后,为了实现(2),你将遍历所有给定的文件,像/list_folder一样下载它们。

    如果我的回答有所帮助,或者您是否需要进一步澄清,请告诉我。谢谢你! :)

答案 1 :(得分:0)

我使用了一个宝贵的技术支持事件(TSI)让Apple工程师发表声明。

结果是,在这个时间点,不支持将Files.app中的文件夹复制到您自己的应用中。如果要导入文件夹,请使用UIDocumentPickerViewController