Хранение имен файлов в массиве Swift
Я ищу код, который позволит мне сканировать папку в моем проекте и хранить все имена файлов с a .расширение jpg в массиве. Это код, который я должен сканировать главную папку моего проекта xcode, однако как я могу хранить имена файлов, найденных внутри, в массиве?
let filemanager:NSFileManager = NSFileManager()
let files = filemanager.enumeratorAtPath(NSHomeDirectory())
while let file = files?.nextObject() {
// store all file names with extension (jpg) in array
}
2 ответа:
Вот пример того, как это работает. Эта функция возвращает массив всех URL-адресов файлов в каталоге и всех его подкаталогах из заданного пути.
func files(atPath: String) -> [NSURL] { var urls : [NSURL] = [] let dirUrl = NSURL(fileURLWithPath: atPath) if dirUrl != nil { let fileManager = NSFileManager.defaultManager() let enumerator:NSDirectoryEnumerator? = fileManager.enumeratorAtURL(dirUrl!, includingPropertiesForKeys: nil, options: nil, errorHandler: nil) while let url = enumerator?.nextObject() as! NSURL? { if url.lastPathComponent == ".DS_Store" { continue } urls.append(url) } } return urls } let allFiles = files("/a/directory/somewhere")
let documentsDirectoryURL = NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as! NSURL let jpgFilesArray = (NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsDirectoryURL, includingPropertiesForKeys: nil, options: .SkipsHiddenFiles | .SkipsSubdirectoryDescendants | .SkipsPackageDescendants, error: nil) as! [NSURL]).sorted{$0.lastPathComponent<$1.lastPathComponent}.filter{$0.pathExtension!.lowercaseString == "jpg"}
Как вычисляемое свойство только для чтения
var jpgFilesArray: [NSURL] { return (NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsDirectoryURL, includingPropertiesForKeys: nil, options: .SkipsHiddenFiles | .SkipsSubdirectoryDescendants | .SkipsPackageDescendants, error: nil) as! [NSURL]).sorted{$0.lastPathComponent<$1.lastPathComponent}.filter{$0.pathExtension!.lowercaseString == "jpg"} }