O que há de errado com meu código para obter os nomes de arquivos na pasta do documento?
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
}
}
Pensei ter lido os documentos corretamente e tenho certeza do que está na pasta de documentos, mas "fileList" não mostra nada? "dir" mostra o caminho para a pasta.
Respostas:
Esta solução funciona com o Swift 4 (Xcode 9.2) e também com o Swift 5 (Xcode 10.2.1+):
Aqui está uma extensão reutilizável do FileManager que também permite ignorar ou incluir arquivos ocultos nos resultados:
fonte
Swift 5
fonte
.
prefixo de ponto e um.cloud
sufixo no nome do arquivo. tentelet icloudFiles = directoryContents.filter{ $0.pathExtension == "icloud" }
deve mostrar os arquivos que não são baixadosUma sintaxe mais curta para SWIFT 3
Exemplo de uso:
Testado no xCode 8.2.3 para iPhone 7 com iOS 10.2 e iPad com iOS 9.3
fonte
A Apple declara sobre
NSSearchPathForDirectoriesInDomains(_:_:_:)
:Com o Swift 5,
FileManager
tem um método chamadocontentsOfDirectory(at:includingPropertiesForKeys:options:)
.contentsOfDirectory(at:includingPropertiesForKeys:options:)
tem a seguinte declaração:Portanto, para recuperar os URLs dos arquivos contidos no diretório de documentos, você pode usar o seguinte snippet de código que usa
FileManager
'surls(for:in:)
econtentsOfDirectory(at:includingPropertiesForKeys:options:)
métodos:Como exemplo, a
UIViewController
implementação abaixo mostra como salvar um arquivo do pacote de aplicativos no diretório de documentos e como obter os URLs dos arquivos salvos no diretório de documentos:fonte
Este código imprime todos os diretórios e arquivos no meu diretório de documentos:
Alguma modificação de sua função:
Qual é chamado por:
fonte
Compatibilidade com Swift 2.0
OU
fonte
Solução simples e dinâmica (Swift 5):
fonte