【问题标题】:Choose destination when saving file保存文件时选择目的地
【发布时间】:2021-10-26 09:56:40
【问题描述】:

是否可以让用户为他想要下载的文件选择一个目的地,比如在选择要上传的文件时可以使用的 DocumentPicker?
我想要这样的东西:

【问题讨论】:

  • 你是说交互一可以帮我保存到文件应用中我想要的位置?
  • 您不能让应用为您的用户选择准确的位置。

标签: ios swift nsfilemanager file-manager uidocumentpickerviewcontroller


【解决方案1】:

是的,对于 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)

【讨论】:

  • 所以您向我们展示了如何选择文件。但这并不是他或她真正要问的问题,对吧?
  • 哎呀!我从该文档页面粘贴了错误的示例。固定的。谢谢@ElTomato
  • 关键是这一行:`UIDocumentPickerViewController(forOpeningContentTypes: [.folder])`,您在其中指定了.folder 的文档类型。
  • @Dad 非常感谢你!将copyItem() 方法放在startAccessingSecurityScopedResource()stopAccessingSecurityScopedResource() 之间解决了我的问题,现在我可以到处保存文件了! :) 我只是希望 Apple 在审查我的应用程序时不会用这些东西来打扰我。 FileManager 本身就是一门科学。
  • @stackich 最棒的!看,我知道你能弄明白的。 :) 干得好!
猜你喜欢
  • 2015-10-17
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多