Проверить состояние zip-файла в UIDocumentPickerViewController

Aug 21 2020

Это мой код для вызова UIDocumentPickerViewController, чтобы выбрать файлы для моего обновления прошивки, которые должны быть .zipтолько. Когда я нажимаю кнопку «Выбрать», появляется окно выбора документов:

@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 файла или просто запретить выбор других форматов? Спасибо!

Ответы

Jithin Aug 21 2020 at 13:31

Выполните инициализацию DocumentPicker со списком поддерживаемых типов.

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

Вот список поддерживаемых ИМП

Lilya Aug 24 2020 at 10:16

В расширении моего представления я использую 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"
    }
}