¿Qué tiene de malo mi código para obtener los nombres de archivo en la carpeta de documentos?
func listFilesFromDocumentsFolder() -> [NSString]?{
var theError = NSErrorPointer()
let dirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
if dirs != nil {
let dir = dirs![0] as NSString
let fileList = NSFileManager.defaultManager().contentsOfDirectoryAtPath(dir, error: theError) as [NSString]
return fileList
}else{
return nil
}
}
Pensé que había leído los documentos correctamente y estoy muy seguro de lo que hay en la carpeta de documentos, pero "fileList" no muestra nada. "dir" muestra la ruta a la carpeta.
Respuestas:
Esta solución funciona con Swift 4 (Xcode 9.2) y también con Swift 5 (Xcode 10.2.1+):
Aquí hay una extensión reutilizable de FileManager que también le permite omitir o incluir archivos ocultos en los resultados:
fuente
Swift 5
fuente
.
prefijo de punto y un.cloud
sufijo en el nombre del archivo. intentelet icloudFiles = directoryContents.filter{ $0.pathExtension == "icloud" }
mostrar los archivos que no se descarganUna sintaxis más corta para SWIFT 3
Ejemplo de uso:
Probado en xCode 8.2.3 para iPhone 7 con iOS 10.2 y iPad con iOS 9.3
fuente
Apple declara sobre
NSSearchPathForDirectoriesInDomains(_:_:_:)
:Con Swift 5,
FileManager
tiene un método llamadocontentsOfDirectory(at:includingPropertiesForKeys:options:)
.contentsOfDirectory(at:includingPropertiesForKeys:options:)
tiene la siguiente declaración:Por lo tanto, para recuperar las URL de los archivos contenidos en el directorio de documentos, puede usar el siguiente fragmento de código que usa
FileManager
los métodosurls(for:in:)
ycontentsOfDirectory(at:includingPropertiesForKeys:options:)
:Como ejemplo, la
UIViewController
implementación a continuación muestra cómo guardar un archivo del paquete de aplicaciones en el directorio de documentos y cómo obtener las URL de los archivos guardados en el directorio de documentos:fuente
Este código imprime todos los directorios y archivos en mi directorio de documentos:
Alguna modificación de su función:
Que se llama por:
fuente
Compatibilidad con Swift 2.0
O
fuente
Solución simple y dinámica (Swift 5):
fuente