Überprüfen Sie die Bedingung für eine Zip-Datei in UIDocumentPickerViewController
Dies ist mein Code zum Aufrufen von UIDocumentPickerViewController, um die Dateien für mein Firmware-Update auszuwählen, die .zipnur sein müssen. Wenn ich auf die Schaltfläche "Auswählen" drücke, wird die Dokumentauswahlansicht angezeigt:
@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)
}
}
Im Moment ist es möglich, die Dateien im .docxFormat zu öffnen , aber ich muss den Benutzer nur ein Format auswählen lassen - eine Zip-Datei.
Ich kann nicht präsentieren, was ich bisher getan habe, weil ich keine Lösung finden kann. Gibt es eine Möglichkeit, nach einer Zip-Datei zu suchen oder die Auswahl anderer Formate zu verbieten? Vielen Dank!
Antworten
Initialisieren Sie den DocumentPicker mit der Liste der unterstützten Typen.
let zip = ["com.pkware.zip-archive"]
let importMenu = UIDocumentPickerViewController(documentTypes: zip, in: .import)
Hier ist eine Liste der unterstützten UTIs
In der Erweiterung meiner Ansicht verwende ich die UIDocumentPickerDelegateund in der Funktion überprüfe ich, ob die letzte Komponente meiner Datei zip ist:
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"
}
}