Sprawdź warunek dla pliku zip w UIDocumentPickerViewController

Aug 21 2020

To jest mój kod do wywoływania UIDocumentPickerViewController w celu wybrania plików do aktualizacji oprogramowania układowego, które muszą być .ziptylko. Kiedy naciskam przycisk „Wybierz”, pojawia się widok selektora dokumentów:

@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)
  }
}

W tej chwili możliwe jest otwieranie plików w .docxformacie, ale muszę pozwolić użytkownikowi wybrać tylko jeden format - plik zip.

Nie mogę przedstawić tego, co zrobiłem do tej pory, ponieważ nie jestem w stanie znaleźć rozwiązania. Czy jest sposób, aby sprawdzić plik zip lub po prostu zabronić wybierania innych formatów? Dziękuję Ci!

Odpowiedzi

Jithin Aug 21 2020 at 13:31

Zintegruj DocumentPicker z listą obsługiwanych typów.

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

Oto lista obsługiwanych UTI

Lilya Aug 24 2020 at 10:16

W rozszerzeniu mojego widoku używam, UIDocumentPickerDelegateaw funkcji sprawdzam, czy ostatni składnik mojego pliku to 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"
    }
}