【发布时间】:2019-02-25 05:56:32
【问题描述】:
我的 iOS 11 应用使用 UIDocumentPickerViewController(.open 模式)处理基于云的文件。获得 URL 后,如何获取存储文件的位置(文件提供程序)的名称? (如“iCloud”、“Dropbox”等)
我的最佳猜测是 URLResourceValues.ubiquitousItemContainerDisplayName,但它似乎只适用于 iCloud。
这是一个测试代码:
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first else { return }
let isAccessible = url.startAccessingSecurityScopedResource()
let res = try! url.promisedItemResourceValues(forKeys: [.ubiquitousItemContainerDisplayNameKey])
print("Container name: \(res.ubiquitousItemContainerDisplayName)")
if isAccessible {
url.stopAccessingSecurityScopedResource()
}
}
对于从 iCloud 挑选的文件,它会打印“iCloud Drive”。但对于基于 Dropbox 的文件,容器名称为 nil。
我错过了什么吗?还有其他方法吗?
【问题讨论】:
标签: ios swift dropbox icloud uidocument