Co jest nie tak z moim kodem przy pobieraniu nazw plików w folderze dokumentów?
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
}
}
Wydawało mi się, że poprawnie przeczytałem dokumenty i jestem bardzo pewien, co znajduje się w folderze dokumentów, ale „fileList” nic nie pokazuje? „dir” pokazuje ścieżkę do folderu.
Odpowiedzi:
To rozwiązanie działa ze Swift 4 (Xcode 9.2), a także ze Swift 5 (Xcode 10.2.1+):
Oto rozszerzenie FileManager wielokrotnego użytku, które pozwala również pomijać lub dołączać ukryte pliki w wynikach:
źródło
Szybki 5
źródło
.
przedrostek kropki i.cloud
przyrostek w nazwie pliku. spróbujlet icloudFiles = directoryContents.filter{ $0.pathExtension == "icloud" }
, powinno pokazać pliki, które nie są pobieraneKrótsza składnia dla SWIFT 3
Przykład użycia:
Testowano na xCode 8.2.3 dla iPhone'a 7 z iOS 10.2 i iPada z iOS 9.3
źródło
Apple mówi o
NSSearchPathForDirectoriesInDomains(_:_:_:)
:W Swift 5
FileManager
ma metodę o nazwiecontentsOfDirectory(at:includingPropertiesForKeys:options:)
.contentsOfDirectory(at:includingPropertiesForKeys:options:)
posiada następującą deklarację:Dlatego też, w celu pobrania adresów URL plików zawartych w katalogu dokumentów, można użyć następującego fragmentu kodu, który używa
FileManager
„surls(for:in:)
icontentsOfDirectory(at:includingPropertiesForKeys:options:)
metod:Jako przykład,
UIViewController
poniższa implementacja pokazuje, jak zapisać plik z pakietu aplikacji do katalogu dokumentów i jak uzyskać adresy URL plików zapisanych w katalogu dokumentów:źródło
Ten kod wypisuje wszystkie katalogi i pliki w moim katalogu dokumentów:
Niektóre modyfikacje Twojej funkcji:
Który jest wywoływany przez:
źródło
Kompatybilność z Swift 2.0
LUB
źródło
Proste i dynamiczne rozwiązanie (Swift 5):
źródło