【发布时间】:2021-10-26 09:56:40
【问题描述】:
【问题讨论】:
-
你是说交互一可以帮我保存到文件应用中我想要的位置?
-
您不能让应用为您的用户选择准确的位置。
标签: ios swift nsfilemanager file-manager uidocumentpickerviewcontroller
【问题讨论】:
标签: ios swift nsfilemanager file-manager uidocumentpickerviewcontroller
是的,对于 iOS 13 及更高版本,您可以通过UIDocumentPickerViewController 要求用户选择目录。您将获得用户选择的目录的安全范围 url。
详情请看:https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories
我已经从下面那个页面粘贴了示例代码,但您需要仔细阅读文档,因为安全范围的 URL 需要小心处理 :)
如果您需要 iOS 12 或更早版本,则用户只能选择文件,因此我不清楚执行此操作的干净方式(但我们使用的是 iOS 14 并且 iOS 15 即将推出,所以希望您不要这样做必须支持回 iOS 13)。
这是上面链接中的示例代码,展示了这是如何完成的:
// Create a document picker for directories.
let documentPicker =
UIDocumentPickerViewController(forOpeningContentTypes: [.folder])
documentPicker.delegate = self
// Set the initial directory.
documentPicker.directoryURL = startingDirectory
// Present the document picker.
present(documentPicker, animated: true, completion: nil)
【讨论】:
.folder 的文档类型。
copyItem() 方法放在startAccessingSecurityScopedResource() 和stopAccessingSecurityScopedResource() 之间解决了我的问题,现在我可以到处保存文件了! :) 我只是希望 Apple 在审查我的应用程序时不会用这些东西来打扰我。 FileManager 本身就是一门科学。