如何访问由 Files.app 复制的 UIPasteboard 中的数据?
How to access data in a UIPasteboard copied by Files.app?
我想使用 Files.app
复制文件夹(例如从 Dropbox 或 iCloud),然后切换到我的应用程序并读取该文件夹的内容以进行进一步处理。我找不到从 UIPasteboard
获取实际数据的方法。在 NSItemProvider
上调用 loadObject
给了我一个 NSData
存档,我可以取消存档然后得到一个(私有的)FPItem
,它实现了 <NSFileProviderItem>
,但是现在呢?我如何实际请求下载该项目指向的实际文件夹?
据我了解,您想从 Dropbox 下载一个文件夹。您可能需要考虑使用 Dropbox API 和 URLSession.shared.datatask(...)
使用 REST 请求。如果你不想处理实现细节,你可以使用像 SwiftyDropbox 这样的库。确实没有必要使用 UIPasteboard,因为您的最终目标是将文件夹下载到您的应用程序。如果您想将上述文件夹保存到 文件应用程序 ,您可以在 download/process 文件夹后这样做。
这里有一些有用的 links:
- Swifty Dropbox Overview
- Swifty Dropbox Download Example
- Swifty Dropbox API Docs
- Dropbox API HTTP (RESTful Requests)
在 link 2 中,下面的代码片段获取保存文件的目录。获取整个文件夹的一种方法是 (1) 在 Documents 目录中创建一个新文件夹,例如 this 和 (2) 遍历 Dropbox 文件夹中的每个项目并将其添加到新创建的文件夹中。
let fileManager = FileManager.default
let directoryURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let destURL = directoryURL.appendingPathComponent("myTestFile")
要实现 (1),您需要获取文件夹中的所有文件,您可以使用此 /list_folder API endpoint. Then, to implement (2), you would iterate through all the files given, downloading them like in link 2。
让我知道我的回答是否有帮助,或者您是否需要进一步说明。非常感谢! :)
我曾利用一次宝贵的技术支持事件 (TSI) 让 Apple 工程师发表声明。
结果是,目前不支持将Files.app
中的文件夹复制粘贴到您自己的应用程序中。如果要导入文件夹,请使用 UIDocumentPickerViewController
.
我想使用 Files.app
复制文件夹(例如从 Dropbox 或 iCloud),然后切换到我的应用程序并读取该文件夹的内容以进行进一步处理。我找不到从 UIPasteboard
获取实际数据的方法。在 NSItemProvider
上调用 loadObject
给了我一个 NSData
存档,我可以取消存档然后得到一个(私有的)FPItem
,它实现了 <NSFileProviderItem>
,但是现在呢?我如何实际请求下载该项目指向的实际文件夹?
据我了解,您想从 Dropbox 下载一个文件夹。您可能需要考虑使用 Dropbox API 和 URLSession.shared.datatask(...)
使用 REST 请求。如果你不想处理实现细节,你可以使用像 SwiftyDropbox 这样的库。确实没有必要使用 UIPasteboard,因为您的最终目标是将文件夹下载到您的应用程序。如果您想将上述文件夹保存到 文件应用程序 ,您可以在 download/process 文件夹后这样做。
这里有一些有用的 links:
- Swifty Dropbox Overview
- Swifty Dropbox Download Example
- Swifty Dropbox API Docs
- Dropbox API HTTP (RESTful Requests)
在 link 2 中,下面的代码片段获取保存文件的目录。获取整个文件夹的一种方法是 (1) 在 Documents 目录中创建一个新文件夹,例如 this 和 (2) 遍历 Dropbox 文件夹中的每个项目并将其添加到新创建的文件夹中。
let fileManager = FileManager.default
let directoryURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let destURL = directoryURL.appendingPathComponent("myTestFile")
要实现 (1),您需要获取文件夹中的所有文件,您可以使用此 /list_folder API endpoint. Then, to implement (2), you would iterate through all the files given, downloading them like in link 2。
让我知道我的回答是否有帮助,或者您是否需要进一步说明。非常感谢! :)
我曾利用一次宝贵的技术支持事件 (TSI) 让 Apple 工程师发表声明。
结果是,目前不支持将Files.app
中的文件夹复制粘贴到您自己的应用程序中。如果要导入文件夹,请使用 UIDocumentPickerViewController
.