Tengo que abrir un archivo personalizado dentro de la aplicación que estoy creando, pero no estoy seguro de cómo hacerlo. El archivo importado solo contiene carpetas dentro de él que contiene un plist
por ejemplo fileName.customExtension/name uuid/name.plist
si abro la copia del archivo personalizado y pego la otra carpeta "nombre uuid" en una carpeta normal que luego importo en la aplicación, funciona bien.
por ejemplo nombre de archivo/nombre uuid/nombre.plist
Entonces, ¿cómo podría importar la carpeta con la extensión personalizada directamente en la aplicación?
Escribí el código a continuación si el archivo personalizado se coloca en la aplicación para probarlo en este momento, pero no funciona, ya que supongo que no estoy convirtiendo la extensión en una carpeta normal, sino que simplemente la elimino.
func cargar archivos importados () {
var fileName: String = "" let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! do { let fileUrls = try FileManager.default.contentsOfDirectory(at: documentsDirectoryURL, includingPropertiesForKeys: nil) for plist in fileUrls { let path: String = plist.path let file = URL(fileURLWithPath: path).lastPathComponent if file.contains(".CustomExtension"){ fileName = URL(fileURLWithPath: path).deletingPathExtension().lastPathComponent } } } catch { print("error path") } var objCBool: ObjCBool = true let mainPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]; let folderPath = mainPath + "/Folder/\(fileName)" let isExist = FileManager.default.fileExists(atPath: folderPath, isDirectory: &objCBool) if !isExist { do { try FileManager.default.createDirectory(atPath: folderPath, withIntermediateDirectories: true, attributes: nil) } catch { print(error) } } let originalDataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("\(fileName).CustomExtension") let newDestinationPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Folder/\(fileName)") do { try FileManager.default.moveItem(at: originalDataFilePath!, to: newDestinationPath!) print("imported") } catch { print(error) } }¡Si alguien pudiera guiarme en la dirección correcta, sería genial, gracias!
La solución es usar tipos de archivos personalizados en la lista de información. Deberá agregar "UTI de tipo exportado" y "Tipos de documentos" a la Lista de información. Entonces se reconocerán sus archivos personalizados.
A continuación se muestra el tutorial que utilicé para implementarlo.
https://chariotsolutions.com/blog/post/importing-data-via-custom-file-types-in/