在 UIDocumentPickerViewController 中检查 zip 文件的条件

Check condition for a zip file in UIDocumentPickerViewController

这是我调用 UIDocumentPickerViewController 来选择我的固件更新文件的代码,这些文件必须是 .zip。当我按下“Select”按钮时,文档选择器视图显示:

@IBAction func selectButtonAction(_ sender: UIButton) {
   if sender.title(for: .normal) == "Select"{
      if let controller = (UIApplication.shared.delegate as? AppDelegate)?.currentViewController {
         let importMenu = UIDocumentPickerViewController(documentTypes: [String(kUTTypeArchive)], in: .open )
         importMenu.delegate = self
         importMenu.modalPresentationStyle = .formSheet
         controller.present(importMenu, animated: true, completion: nil)
       }
    } else {
       changeDFUItemsDesign(isFileURLNil: true)
  }
}

现在可以打开 .docx 格式的文件,但我只需要让用户选择一种格式 - zip 文件。

我无法展示我到目前为止所做的事情,因为我找不到解决方案。有没有办法检查 zip 文件或只是禁止选择其他格式?谢谢!

使用支持的类型列表初始化文档选择器。

    let zip = ["com.pkware.zip-archive"]
    let importMenu = UIDocumentPickerViewController(documentTypes: zip, in: .import)

Here 支持的 UTI 列表

在我的视图扩展中,我使用 UIDocumentPickerDelegate 并在函数中检查文件的最后一个组件是否为 zip:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
   if let fileURL = urls.first, fileURL.pathExtension == "zip" {
      self._fileURL = fileURL
      self.fileNameLabel.text = _fileURL?.lastPathComponent
    } else {
      _fileURL = nil
      fileNameLabel.text = "Select file"
    }
}