Verifique la condición de un archivo zip en UIDocumentPickerViewController
Este es mi código para llamar a UIDocumentPickerViewController para elegir los archivos para mi actualización de firmware que deben ser .zip
solo. Cuando presiono el botón "Seleccionar", aparece la Vista del selector de documentos:
@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)
}
}
En este momento, es posible abrir los archivos en .docx
formato, pero solo necesito permitir que el usuario elija un formato: un archivo zip.
No puedo presentar lo que he hecho hasta ahora porque no puedo encontrar una solución. ¿Hay alguna forma de verificar un archivo zip o simplemente prohibir la selección de otros formatos? ¡Gracias!
Respuestas
Inicialice DocumentPicker con la lista de tipos admitidos.
let zip = ["com.pkware.zip-archive"]
let importMenu = UIDocumentPickerViewController(documentTypes: zip, in: .import)
Aquí está una lista de UTI compatibles
En la extensión de mi vista utilizo UIDocumentPickerDelegate
y en la función verifico si el último componente de mi archivo es 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"
}
}