Quel est le problème avec mon code pour obtenir les noms de fichiers dans le dossier du document?
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
}
}
Je pensais avoir lu les documents correctement et je suis très sûr de ce qu'il y a dans le dossier des documents, mais "fileList" ne montre rien? "dir" montre le chemin du dossier.
Réponses:
Cette solution fonctionne avec Swift 4 (Xcode 9.2) et également avec Swift 5 (Xcode 10.2.1+):
Voici une extension FileManager réutilisable qui vous permet également d'ignorer ou d'inclure des fichiers cachés dans les résultats:
la source
Swift 5
la source
.
préfixe de point et un.cloud
suffixe dans le nom du fichier. essayezlet icloudFiles = directoryContents.filter{ $0.pathExtension == "icloud" }
il devrait afficher les fichiers qui ne sont pas téléchargésUne syntaxe plus courte pour SWIFT 3
Exemple d'utilisation:
Testé sur xCode 8.2.3 pour iPhone 7 avec iOS 10.2 et iPad avec iOS 9.3
la source
Apple déclare à propos de
NSSearchPathForDirectoriesInDomains(_:_:_:)
:Avec Swift 5,
FileManager
a une méthode appeléecontentsOfDirectory(at:includingPropertiesForKeys:options:)
.contentsOfDirectory(at:includingPropertiesForKeys:options:)
a la déclaration suivante:Par conséquent, afin de récupérer les URL des fichiers contenus dans le répertoire documents, vous pouvez utiliser l'extrait de code suivant qui utilise
FileManager
les méthodesurls(for:in:)
etcontentsOfDirectory(at:includingPropertiesForKeys:options:)
:À titre d'exemple, l'
UIViewController
implémentation ci-dessous montre comment enregistrer un fichier du bundle d'applications dans le répertoire documents et comment obtenir les URL des fichiers enregistrés dans le répertoire documents:la source
Ce code imprime tous les répertoires et fichiers de mon répertoire de documents:
Quelques modifications de votre fonction:
Qui est appelé par:
la source
Compatibilité Swift 2.0
OU
la source
Solution simple et dynamique (Swift 5):
la source